在Linux系统中,waitpid()是一个用于等待子进程结束的系统调用。waitpid()函数的第二个参数是一个指向int类型变量的指针,用于接收子进程结束时的状态信息。这个状态信息可以帮助父进程了解子进程的结束原因,例如是否正常结束,是否被信号中断等。
以下是一个简单的示例代码,展示了如何使用waitpid()函数:
#include<stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == 0) { // 子进程
printf("I am the child process, my pid is %d\n", getpid());
sleep(2);
exit(0);
} else if (pid > 0) { // 父进程
int status;
waitpid(pid, &status, 0); // 等待子进程结束
if (WIFEXITED(status)) { // 判断子进程是否正常结束
printf("Child process exited with status %d\n", WEXITSTATUS(status));
} else {
printf("Child process terminated abnormally\n");
}
} else { // fork失败
perror("fork");
exit(1);
}
return 0;
}
在这个示例中,父进程调用waitpid()函数等待子进程结束,并通过第二个参数获取子进程的结束状态。然后根据结束状态判断子进程是否正常结束,并输出相应的信息。
需要注意的是,waitpid()函数的使用场景通常是父进程需要等待子进程结束后再继续执行的情况。如果不需要等待子进程结束,可以使用其他系统调用,例如fork()函数创建子进程。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云