1.exec家族函数 执行exec后关闭了原进程,以新程序取代原来的进程,系统从新进程运行 ,新进程的PID和原进程一样。
2.fork 创建一个子进程 ,新进程继承了父进程的一切,子进程中返回0,父进程返回子进程的PID,子进程会有一个新的PID
3. system 有三个系统调用 一是 用fork建立一个子进程 二是用execve 调用默认环境变量中执行 传入参数 三是 执行 waitpid
4. pd=fork
count++
printf("%d",count); 输出 count=1 count=1
5.vfork 与 fork 的区别
一 fork 子进程拷贝父进程的数据
vfork 子进程和父进程共享数据
二 fork 子进程和父进程 谁先运行 不确定
vfork 子进程 先运行 父进程后运行
6. _exit 是 直接使进程中止,清除使用的内在空间 并清除各种数据结构
exit 是安全退出
7. 僵尸进程 exit退出后 进程并没完全消失 产生了僵尸进程
8.wait 等待 子进程的退出 否则会一直阻塞
waitpid wait 其实的waitpid的特殊
9. 怎么编写一个守护进程
一 创建子进程 终止父进程
二 在子进程中创建一个新会话
三 改变工作目录
四 重设文件掩码
五 关闭文件描述符号
如下
if(p1==0)
{
printf("this a zi");
sleep(10);
}
if(p1>0)
{
//p2=wait(NULL);
printf("this a fu");
}
exit(0)
问题
1.为什么上面代码打印出this a zi
必须要等10秒
2.为什么不加wait 总是先打印 this is a fu
3.不加exit(0)
程序有什么效果 该为 p1=vfork 呢
阅读(1586) | 评论(0) | 转发(1) |