关于linux的fork用法的思考---读CSAPP
来源:互联网 发布:程序员的数学1 2 3pdf 编辑:程序博客网 时间:2024/05/19 09:12
#include "apue.h"#include <sys/wait.h>int main(void){pid_t pid;int status;if ((pid = fork()) < 0){printf("fork error\n");}else if (pid == 0)exit(7);if (wait(&status) != pid) /* wait for child. */printf("wait error.\n");pr_exit(status);if ((pid = fork()) < 0)printf("fork error.\n");else if (pid == 0)abort();if (wait(&status) != pid)printf("wait error.\n");pr_exit(status);printf("-----66666--------------------------------------------------.\n");if ((pid = fork()) < 0){printf("fork error.\n");}else if (pid == 0){printf("->>>>>>>>>>>>>>>...\n");//exit(0);}//status /= 0;//printf("---77777--------------------------------------------------------.\n");if (wait(&status) != pid)printf("wait error.\n");//printf("-----------------------------------------------------------.\n");pr_exit(status);exit(0);}此时的运行结果很是为:
normal termination, exit status = 7
abnormal termination, signal number = 6
-----66666--------------------------------------------------.
->>>>>>>>>>>>>>>...
wait error.
abnormal termination, signal number = 6
normal termination, exit status = 0
后来才明白,当我最后一次fork的时候, 没有把子进程exit后, 子进程一直运行, 之后会运行 if (wait(&status) != pid), 而他没有自己任何的子进程,故打印出 wait error. 此时staus的状态还是上一次留下来的6。此时刻, 父进程一直在wait,当子进程调用exit(0)后, 父进程才得以运行。故有以上打印。
- 关于linux的fork用法的思考---读CSAPP
- CSAPP Chap8 关于Fork函数的一些练习与分析
- 关于CSAPP lab3中压栈问题引发的思考
- 关于fork()函数的一点思考
- 关于signal和fork的思考
- 一个fork的思考
- 关于CSAPP的一些资料
- CSAPP 关于寄存器的说明
- linux/Unix中fork函数的用法
- linux中fork()函数的用法详解
- Linux下fork创建进程的一些思考
- 一个fork问题的思考
- linux中关于fork函数的使用
- 关于linux fork()函数的一道题
- linux:关于fork()的例题
- fork函数的用法
- fork的用法实例
- fork()函数的用法
- ajax oracle
- 用css3实现的简单的云朵
- 简述BSD协议和GPL协议的区别
- Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)
- linux下route命令
- 关于linux的fork用法的思考---读CSAPP
- strupr()函数奇怪问题
- 距离、带宽和延迟对VDI性能的影响
- android 设备唯一码的获取
- oracle小记之建立表空间、用户 和 ORA-28000错误
- AndroidManifest中original-package标签
- C# Lambda Expressions 简介
- android流量统计
- GIF、JPEG、PNG比较