atexit函数示例
2016-03-06 15:35
92 查看
#include<sys/types.h>
#incldue<stdio.h>
#include<stdlib.h>
#include<unistd.h>
void forkerror(void);
void excerror(void);
int main()
{
pid_t pid;
if((pid=fork())<0)
{
atexit(forkerror);
}
else if(pid==0)
{
printf("Child process PID:%d.\n",getpid());
setenv("PS","CHLLD\\$",1);
printf("Process %4d:calling exec.\n",getpid);
if(excel("/bin/sh","bin/sh","arg2",NULL)<0)
{
atexit(execerror);
}
printf("Process%4d:You should never see this because the child is already gone.\n",getpid);
printf("Process%4d:The child process is exiting...\n",getpid());
}
else
{
pritntf("Parent process PID:%4d.\n",getpid());
pritntf("Process%4d:The parent has fork process %d.\n",pid);
pritntf("Process%4d:The child has called exec or has exited.\n",getpid());
}
return 0;
}
void forkerror(void)
{
printf("fork error!\n");
exit(1);
}
void execerror(void)
{
printf("exec error!\n");
exit(1);
}
#incldue<stdio.h>
#include<stdlib.h>
#include<unistd.h>
void forkerror(void);
void excerror(void);
int main()
{
pid_t pid;
if((pid=fork())<0)
{
atexit(forkerror);
}
else if(pid==0)
{
printf("Child process PID:%d.\n",getpid());
setenv("PS","CHLLD\\$",1);
printf("Process %4d:calling exec.\n",getpid);
if(excel("/bin/sh","bin/sh","arg2",NULL)<0)
{
atexit(execerror);
}
printf("Process%4d:You should never see this because the child is already gone.\n",getpid);
printf("Process%4d:The child process is exiting...\n",getpid());
}
else
{
pritntf("Parent process PID:%4d.\n",getpid());
pritntf("Process%4d:The parent has fork process %d.\n",pid);
pritntf("Process%4d:The child has called exec or has exited.\n",getpid());
}
return 0;
}
void forkerror(void)
{
printf("fork error!\n");
exit(1);
}
void execerror(void)
{
printf("exec error!\n");
exit(1);
}
相关文章推荐
- Spring MVC统一异常处理
- 201603061528_《Javascript交换两个变量值(不借用第三变量)》
- Homework2 of Software Testing
- think in java读后总结---Map集合的几种遍历方式
- Python之常用模块(一)
- android简单实例---------ActionBar的简单使用(一)
- 边看书边做边发挥-图书软件-9
- NBUT 1665
- 构建之法阅读笔记01--泛读《构建之法》提出的问题
- 构建之法阅读笔记01
- 20道简单加减法随机生成程序
- QT5 应用1
- 文档目录与宏
- Android开发60条技术经验总结
- LeetCode--160. Intersection of Two Linked Lists
- Java编程学习小技巧
- 基于 ODR 和 BSMOTE 的不均衡 SVM 分类算法
- POJO和EJB的区别
- 集群源码安装ONOS
- [国嵌攻略][110][驱动开发概述]