linux调用fork函数
时间: 2023-10-14 22:25:34 浏览: 111
在 Linux 中,我们可以使用 fork() 函数来创建一个新的进程。该函数会在当前进程的基础上复制出一个新的进程,新进程和旧进程是相互独立的,但是它们会共享一些资源,比如代码段、数据段、堆栈等。
调用 fork() 函数会返回两次,其中一次返回值为 0,表示当前进程是新创建的子进程;另一次返回值为子进程的进程 ID,表示当前进程是父进程。因此,我们可以根据返回值来判断当前进程是父进程还是子进程。
下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid;
pid = fork();
if (pid == -1) {
printf("fork failed\n");
return -1;
} else if (pid == 0) {
printf("this is child process, pid=%d\n", getpid());
} else {
printf("this is parent process, child pid=%d, parent pid=%d\n", pid, getpid());
}
return 0;
}
```
在上面的程序中,我们首先定义了一个 pid 变量来保存 fork() 函数的返回值。然后,我们调用 fork() 函数创建一个新的进程,并根据返回值判断当前进程是父进程还是子进程。最后,我们输出一些信息,以便于查看程序的运行结果。
如果我们编译并运行上面的程序,我们可以看到如下的输出:
```
this is parent process, child pid=1234, parent pid=5678
this is child process, pid=1234
```
其中,1234 是子进程的进程 ID,5678 是父进程的进程 ID。我们可以看到,子进程的输出在父进程之后,这是因为 fork() 函数创建的子进程需要一些时间来复制父进程的资源。
阅读全文