- fork() 函数的使用
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。
#include <stdio.h>
#include <unistd.h>
int main() {
printf("before pid=%d\n", getpid());
pid_t pid = fork();
int a = 100;
if (pid < 0) {
return -1;
} else if (pid == 0) {
a = 20;
printf("this is child! pid=%d a=%d\n", getpid(), a);