fork函数小结 fork函数头文件

1.调用一次,返回两次。

2.子进程中fork返回0,父进程中fork返回子进程的PID。原因是:①在子进程中通过调用getppid可以方便的指导父进程的PID;②没有一个函数可以使父进程获得其所有子进程的PID。(所以在fork返回时,将子进程的PID直接返回给父进程)

fork函数小结 fork函数头文件

注:子进程的ID不可能为0,因为PID为0的进程是swapper进程。

3.父、子进程共享正文段,不共享数据、堆、栈段,子进程获得父进程数据、堆、栈段的副本。

注:目前,大多数实现并直接复制父进程的数据、堆栈段,而是使用写时复制(Copy-On-Write)技术,在修改这块内存区域时,才会为被修改的数据创建副本。

4.子进程会获得缓冲区的副本,即fork前进程缓冲区中的数据未被flush掉,则fork后,子进程能够获得父进程缓冲区中的数据。

5.父进程所有被打开的文件描述符都会被复制到子进程中。

注:fork之后处理文件描述符通常有两种情况:

①父进程等待子进程结束;

②父、子进程各自执行不同的正文段(父、子进程各自关闭不需要使用的文件描述符);

6.fork之后父、子进程的区别:

①fork的返回值;

②进程ID不同;

③父进程也不同;

④子进程的tms_utime、tms_stime、tms_cutime和tms_ustime均被设置为0;

⑤父进程设置的文件锁不会被子进程继承;

⑥子进程的未处理的闹钟被清除;

⑦子进程的未处理信号集设置为空集;

7.fork失--败的两个主要原因:

①系统中进程数目已经达到上限;

②该实际用户的进程总数达到系统限制;

8.fork的两种用法:

①一个进程希望复制自己,使得父、子进程执行不同的代码段。如父进程监听端口,收到消息后,fork出子进程处理消息,父进程仍然负责监听消息。

②一个进程需要执行另一个程序。如fork后执行一个shell命令。

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/304941.html

更多阅读

c++标准头文件usingnamespacestd useing namespace std

尽量用不带.h的标准头文件来代替带.h的老式标准头文件(iostream.h等标准C++头文件直接去掉.h而stdio.h等标准C头文件则在去掉.h之后在前面加上c,比如stdio.h变为cstdio)按说.h的头文件都应

删除文件函数和文件更名函数 c语言删除文件函数

1. 删除文件函数(remove())使用函数remove(char *filename);可删除文件filename,filename可以带路径名。函数执行成功,返回0值;否则,返回-1,且错误标志errno取下列两个值之一:ENOENT(表示文件不存在)或EACCES(表示拒绝存取)。例10.15

backtrace函数与堆栈 函数调用堆栈

一般察看函数运行时堆栈的方法是使用GDB之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在头文件"execinfo.h"中声明了三个函数用于获取当前线程

C语言函数只定义而不声明问题 c语言变量声明和定义

小白实验证明,Tc3.0中,不写函数声明,只写函数定义也是可以的。但是:申明-- 不开辟内存,仅仅告诉编译器,申明的部分存在,要预留一点空间。 定义-- 开辟内存。 申明 属于预编译范畴的。最好写在头文件中(楼主,自定义头文件学了没有啊?)(申明都写

声明:《fork函数小结 fork函数头文件》为网友青春用来挥霍分享!如侵犯到您的合法权益请联系我们删除