Linux的进程函数fork的使用

来源:互联网 发布:卡达目镜片 知乎 编辑:程序博客网 时间:2024/06/03 03:30

Linux的进程包含三大部分,进程控制块、正文段和数据段,保证进程可以实现共享数据,共享正文。


pid_t fork(void);

函数功能:产生一个子进程
返回值:
  1)在父进程中,fork返回新创建子进程的进程ID;
  2)在子进程中,fork返回0;
  3)如果出现错误,fork返回一个负值;


下面是实例代码:

#include <unistd.h>  #include <stdio.h>  void isr(int nsig){    printf("pid = %d pidd = %di sig = %d\n",getpid(),getppid(),nsig);    //wait();}int main ()   {       pid_t fpid; //fpid表示fork函数返回的值      int count=0;      signal(SIGCHLD,isr);  //设置该信号,当产生子进程的时候,调用isr函数    fpid=fork();       if (fpid < 0)           printf("error in fork!");       else if (fpid == 0)     {              count++;          printf("i am the child process, my process id is %d,  count = %d\n",getpid(),count);        }      else            {          wait();//等待子进程执行结束之后,再执行        count++;         printf("i am the parent process, my process id is %d count = %d \n",getpid(),count);       }     return 0;  }  

运行结果:
i am the child process, my process id is 17621, count = 1
pid = 17620 pidd = 5665i sig = 17
i am the parent process, my process id is 17620 count = 1

说明只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的几乎完全相同,

0 0