编写一个C 程序fork-crl1.c,并使用系统调用fork()创建一个子进程。
时间: 2024-11-18 20:18:50 浏览: 0
在C语言中,`fork()`是一个系统调用,用于在当前进程中创建一个新的进程,新进程称为子进程,原进程被称为父进程。下面是一个简单的示例,展示了如何编写名为`fork_crl1.c`的程序,该程序演示了如何使用`fork()`:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h> // 包含fork()的声明
int main() {
int pid; // 子进程ID变量
// fork()函数调用,如果成功返回0给子进程,原进程返回子进程ID
if ((pid = fork()) == 0) { // 如果我们是子进程
printf("I am child process with PID: %d\n", getpid());
// 子进程添加额外的操作...
} else if (pid > 0) { // 如果我们是父进程
printf("Parent process with PID: %d, created child process with PID: %d\n", getpid(), pid);
// 父进程可以等待子进程结束
wait(NULL); // 或者 waitpid(pid, NULL, 0);
} else { // fork失败,通常会返回-1
perror("Fork failed");
exit(1);
}
return 0;
}
```
在这个例子中,主函数首先调用`fork()`。如果返回值为0,说明我们是新创建的子进程;如果大于0,我们是父进程,并且知道了子进程的PID。注意,对于父进程来说,子进程的`fork()`调用将立即返回,因此父进程需要通过`wait()`或`waitpid()`来等待子进程结束。
阅读全文