Linux c编程 父进程在子进程结束后输出子进程标识符
时间: 2024-05-03 17:23:03 浏览: 150
C例子:父进程与子进程
以下是一个简单的例子,展示了如何在父进程中等待子进程结束,并在子进程结束后输出子进程标识符。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
pid_t pid, wpid;
int status;
pid = fork();
if (pid == 0) { // 子进程
printf("子进程正在运行,标识符为 %d\n", getpid());
sleep(5); // 睡眠5秒钟
exit(0);
} else if (pid > 0) { // 父进程
wpid = waitpid(pid, &status, 0); // 等待子进程结束
printf("子进程 %d 已经结束\n", wpid);
} else { // 出错
perror("fork");
exit(1);
}
return 0;
}
```
在这个例子中,当父进程开始运行时,它通过调用`fork()`创建了一个子进程。在子进程中,它输出了自己的标识符并睡眠了5秒钟,然后调用`exit()`退出。
在父进程中,它调用了`waitpid()`等待子进程结束。一旦子进程结束,父进程就会输出子进程的标识符。注意,父进程中的`wpid`变量保存的是实际结束的进程的标识符,而不是创建的子进程的标识符。
运行这个程序,你应该会看到类似于以下输出:
```
子进程正在运行,标识符为 1234
子进程 1234 已经结束
```
其中,`1234`是创建的子进程的标识符。
阅读全文