Linux中wait()和waitpid()函数怎么使用
导读:在Linux中,`wait( `和`waitpid( `函数用于等待子进程的终止。 `wait( `函数的原型如下: pid_t wait(int *status ; 其中`status`是一个指向整型变量的指针,用于存储子进程的退出状态。...
在Linux中,`wait()`和`waitpid()`函数用于等待子进程的终止。
`wait()`函数的原型如下:
pid_t wait(int *status);
其中`status`是一个指向整型变量的指针,用于存储子进程的退出状态。该函数会阻塞调用进程,直到一个子进程终止。如果子进程已经终止,那么它的退出状态会被立即返回。如果调用进程没有子进程或者子进程已经被其他进程等待,那么`wait()`函数会立即出错返回-1。
`waitpid()`函数的原型如下:
pid_t waitpid(pid_t pid, int *status, int options);
其中`pid`是要等待的子进程的进程ID。使用`-1`表示等待任意子进程。`status`参数用于存储子进程的退出状态。`options`参数用于指定其他选项,如`WNOHANG`表示非阻塞等待。
`waitpid()`函数会阻塞调用进程,直到指定的子进程终止。如果指定的子进程已经终止,那么它的退出状态会被立即返回。如果调用进程没有指定的子进程或者指定的子进程已经被其他进程等待,那么`waitpid()`函数会立即出错返回-1。
以下是一个使用`wait()`函数的示例:
#include
#include
#include
#include
#include
int main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0) {
// 子进程
printf("子进程开始运行\n");
sleep(3);
printf("子进程结束\n");
exit(0);
}
else if (pid >
0) {
// 父进程
printf("父进程等待子进程终止\n");
wait(&
status);
printf("子进程终止\n");
}
else {
// fork失败
printf("fork失败\n");
return 1;
}
return 0;
}
以下是一个使用`waitpid()`函数的示例:
#include
#include
#include
#include
#include
int main() {
pid_t pid;
int status;
pid = fork();
if (pid == 0) {
// 子进程
printf("子进程开始运行\n");
sleep(3);
printf("子进程结束\n");
exit(0);
}
else if (pid >
0) {
// 父进程
printf("父进程等待子进程终止\n");
waitpid(pid, &
status, 0);
printf("子进程终止\n");
}
else {
// fork失败
printf("fork失败\n");
return 1;
}
return 0;
}
以上示例中,父进程会等待子进程终止,然后打印相应的信息。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中wait()和waitpid()函数怎么使用
本文地址: https://pptw.com/jishu/569025.html