fork是Linux中比较重要的一个函数
他从已经存在的进程中创建一个新的进程
新的进程称为子进程,原进程称为父进程
子进程基本是父进程的一个复制品
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// 使用 fork 函数创建一个新的进程
pid_t new_pid = fork();
// 用于保存不同进程的消息和循环次数
char* msg = NULL;
int n = 0;
// 根据 fork 的返回值判断当前是父进程还是子进程
switch (new_pid)
{
case -1:
perror("[ERROR] Fork failed"); // 输出错误信息
exit(EXIT_FAILURE);
case 0:
msg = "This is the child process.\n";
n = 5; // 子进程循环次数
break;
default:
msg = "This is the parent process.\n";
n = 4; // 父进程循环次数
break;
}
// 循环打印消息
for (int i = 0; i < n; ++i)
{
printf("Message: %s", msg);
sleep(1);
}
exit(EXIT_SUCCESS);
}
这个程序通过 fork
创建了一个子进程,然后根据返回值区分了父子进程,分别输出不同的消息并进行不同次数的循环。这段代码演示了 fork
的基本用法,创建出的子进程是父进程的复制品。