fork 创建子进程

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$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值