unix 进程控制

来源:互联网 发布:java用eclipse安装教程 编辑:程序博客网 时间:2024/06/06 00:42

fork,创建子进程

1、子进程是父进程的副本,会得到父进程全局、栈、堆上数据的副本,简单说就复制一份其全局、栈、堆上 的内存;

2、当然对于上述内存,不是fork之后马上复制,而是写时复制;

3、子进程得到父进程描述符副本,但是文件是共享的,同时父子进程同时写文件,不会照成混乱,因为文件偏移量对于俩进程是共享的;


当然对于描述符的操作,通常有如下2场景:

1、父进程等待子进程结束,其描述符子进程操作,父进程不予干预,待子进程结束,父进程再操作;

2、有俩描述符,父子进程各自操作自己的,关闭其不使用的,socket编程进场用到。


fork失败的主要原因就是其子进程数太多了,超过了CHILD_MAX定义的最大值


fork常用场景:

1、父子执行不同代码,常用在socket tcp server,父进程socket fd继续listen,子进程socket负责接收发送数据;

2、父子进程执行不同操作,子进程fork出来之后,直接调用exec。


僵死进程:

1、子进程已经exit退出,但是父进程没有调用wait或waitpid截获子进程有关信息,是释放其占用资源,这样子进程资源一直占用着,直到父进程exit。



原创粉丝点击