在开始学习系统编程的时候,学习了fork的使用,记录下来以供自己以后的学习
fork函数用于创建一个新的进程,
#include <sys/types.h>
#include <unistd.h> #include <stdlib.h> #include <stdio.h> int main(void) { pid_t pid; char *message; int n; pid = fork(); if (pid < 0) { perror("fork failed"); exit(1); } if (pid == 0) { message = "This is the child\n"; n = 3; } else { message = "This is the parent\n"; n = 6; } for(; n > 0; n--) { printf("%s",message); sleep(1); } return 0; }
程序运行结果:
返回值: 子进程返回 0,父进程返回子进程的id,若出错,则返回-1;
fork函数调用一次但是返回两次,两次返回的唯一区别是子进程的返回值是0,而父进程返回值是新进程的进程ID号。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID号。fork函数使子进程返回0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getppid以获取其父进程的进程ID