fork函数简单示例

一句话总结主题:如果fork调用成功的话,在父进程中返回子进程的PID,在子进程中返回0

如何理解这句话呢?

/* file main.c*/
#include 
#include 
#include 
int main ()
{
          pid_t ret_pid;
          ret_pid=fork();
          if (ret_pid < 0)
                  printf("error in fork!");
          else if (ret_pid == 0)
                  printf("i am the child process, my process id is %d, ret_pid=%d. \n", getpid(), ret_pid);
          else
                  printf("i am the parent process, my process id is %d, ret_pid=%d. \n", getpid(), ret_pid);
          return 0;
}


编译执行(注意 *.c,用gcc;对于*.cpp,要使用g++):

>> gcc main.c
>> ./a.out

结果是:

i am the parent process, my process id is 25711, ret_pid=25712.
i am the child process, my process id is 25712, ret_pid=0.
  • ret_pid的值小于零,说明fork函数执行出错;
  • ret_pid的值是零,说明此时是在子进程中,通过getpid()得到子进程PID号,即25712;
  • ret_pid的值大于零,说明此时是在父进程中,通过getpid()得到父进程的ID,即25711, 并且此时ret_pid的值是25712,即子进程的PID号;

参考:关于fork函数的作用

你可能感兴趣的:(计算机原理)