博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fork子进程
阅读量:6336 次
发布时间:2019-06-22

本文共 865 字,大约阅读时间需要 2 分钟。


title: fork子进程

data: 2019/3/21 20:24:39
toc: true
---

这里实在学习socket编程前的小知识点,用来创建多个服务端

学习文档

速记

  • fork并不保证父子进程的执行顺序,会存在父进程先比子进程结束,这个时候子进程的就可能由系统进程1( PID为 1 的 init)接管
  • 子进程返回 0
  • 父进程返回子进程的进程号 (PID)
  • 粗浅的理解就是fork之后创建了一个一模一样的上下文,子进程也是从下一句话开始的,只不过fork获得的返回值在子进程中得到的是0

简单代码

#include 
#include
#include
int main(){ pid_t pid1; pid_t pid2; printf("%d\n", 1); pid1 = fork(); printf("%d\n", 2); pid2 = fork(); printf("pid1:%d, pid2:%d\n", pid1, pid2);}

这里会打印

122pid1:2101, pid2:2102pid1:2101, pid2:0pid1:0, pid2:2103pid1:0, pid2:0

也就是fork后从此处就有两个同样的进程开始了

僵尸进程signal(SIGCHLD, SIG_IGN)

SIGCHLD信号,子进程结束时, 父进程会收到这个信号。如果父进程没有处理这个信号,也没有等待(wait)子进程,子进程虽然终止,但是还会在内核进程表中占有表项,这时的子进程称为僵尸进程。这种情 况我们应该避免(父进程或者忽略SIGCHILD信号,或者捕捉它,或者wait它派生的子进程,或者父进程先终止,这时子进程的终止自动由init进程 来接管)。

转载于:https://www.cnblogs.com/zongzi10010/p/10574403.html

你可能感兴趣的文章
(转)SQL SERVER 生成建表脚本
查看>>
对 Java Integer.valueOf() 的一些了解
查看>>
253:Cube painting
查看>>
2016 年 Java 工具和技术的调查:IDEA 已超过
查看>>
Robot Framework学习笔记(十)------Selenium2Library库
查看>>
openssl 自建CA签发证书 网站https的ssl通信
查看>>
18、jmeter对数据库进行压力测试
查看>>
19、Linux命令对服务器内存进行监控
查看>>
springmvc中的字典表
查看>>
iterator的使用和封个问题
查看>>
mac 安装php mongo扩展,无法使用的解决办法
查看>>
hdu 4627 The Unsolvable Problem
查看>>
hdu 4268 Alice and Bob(STL贪心)
查看>>
研究音频编解码要看什么书
查看>>
我的友情链接
查看>>
Could not find acceptable representation
查看>>
我的友情链接
查看>>
layui学习笔记——layer弹出层
查看>>
动态SQL
查看>>
LVM 动态逻辑卷
查看>>