Linux下进程编程入门笔记-演道网

fork()系统调用

    fork的作用是根据一个现有的进程复制出一个新 进程,原来的进程称为父进程(Parent Process) ,新进程称为子进程(Child Process)。系统中 同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的。在Shell下输入 命令可以运行一个程序,是因为Shell进程在读取用户输入的命令之后会调用fork复制出一个新 的Shell进程,然后新的Shell进程调用exec执行新的程序。

例如:在Shell提示符下输入命令ls,首先fork创建子进程,这时父进程仍在执行/bin/bash程序,然后子进程调用exec执行新的程序/bin/ls

除了子进程和父进程的进程ID不同,其他资源一模一样。

——创建子进程

  1. 函数原型:

    #include  
    #include   
    pid_t fork(void);  
    

返回值信息:(一次调用两次返回的性质)
fork调用失败则返回-1,
成功调用后父进程中返回值为子进程的pid,在子进程中返回值为1
其执行顺序不定!

    特点:调用一次,返回两次。

命令设置gdb

setfollow-fork-mode child 在fork之后跟踪子进程

set follow-fork-mode parent 则是跟踪父进程,然后用run命令,看到的现象是父进程一直在运行

demo:

#include   
#include   
#include   
#include   
#include 

int main(int argc, char **argv)  
{  
  pid_t m_pid;  

  m_pid = fork();  
  if (pid < 0){  
    perror("fork failed");  
    exit(1);  
  }  
  if (m_pid == 0){
    printf("i am child! \n");  
  }  
  else {  
    printf("i am parent! \n");
  }    
  return 0;  
}  

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn