在开始学习系统编程的时候,学习了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