android fork 子进程,fork子进程

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);

}

这里会打印

1

2

2

pid1:2101, pid2:2102

pid1:2101, pid2:0

pid1:0, pid2:2103

pid1:0, pid2:0

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

僵尸进程signal(SIGCHLD, SIG_IGN)

SIGCHLD信号,子进程结束时, 父进程会收到这个信号。如果父进程没有处理这个信号,

你可能感兴趣的:(android,fork,子进程)