fork 创建子进程,特点: 调用一次,返回两次。
#include<stdio.h>
int main(char** args) {
int cpid = fork();
if(cpid == 0) {
//in the child process
printf("I am child process, PID= %d, cpid = %d \n",getpid(),cpid);
}
else if(cpid > 0) {
//in the parent process
printf("I am parent process, PID= %d, cpid = %d \n",getpid(),cpid);
}
else {
//unable to create child process
perror("unable to create child");
}
}
/*
int r = fork()
如果返回0,则表示进入子进程代码逻辑;
如果返回正数,该正数等于子进程的进程号,并执行父进程的后继逻辑;
如果返回负数,则表示子进程创建失败,数值表示失败的原因。
调用一次,返回两次,至于先返回子进程,还是返回父进程是不可预知的。
*/
编译并运行
bash-3.00$ gcc -o forkdemo.o forkdemo.c
bash-3.00$ forkdemo.o
I am parent process, PID= 1667082, cpid = 839764
I am child process, PID= 839764, cpid = 0
bash-3.00$ ls
forkdemo.c forkdemo.o lib.c lib.o main.c main.o myHello tags
bash-3.00$
3443

被折叠的 条评论
为什么被折叠?



