在C語言中,wait函數(shù)用于等待子進程的結(jié)束。
下面是wait函數(shù)的使用方法:
引入頭文件:#include <sys/types.h> 和 #include <sys/wait.h>
創(chuàng)建子進程:使用fork函數(shù)創(chuàng)建子進程。
在父進程中調(diào)用wait函數(shù):在父進程中調(diào)用wait函數(shù),等待子進程結(jié)束。
獲取子進程的結(jié)束狀態(tài):wait函數(shù)返回子進程的pid(進程ID),可以通過wait的參數(shù)獲取子進程的結(jié)束狀態(tài)。
下面是一個簡單的示例代碼:
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid;
int status;
pid = fork();
if (pid == -1) {
// 創(chuàng)建子進程失敗
perror("fork");
return 1;
}
else if (pid == 0) {
// 子進程執(zhí)行的代碼
printf("This is child process.\n");
sleep(5);
return 0;
}
else {
// 父進程執(zhí)行的代碼
printf("This is parent process.\n");
wait(&status);
if (WIFEXITED(status)) {
printf("Child process exited with status: %d\n", WEXITSTATUS(status));
}
return 0;
}
}
在上面的示例代碼中,首先使用fork函數(shù)創(chuàng)建了一個子進程。子進程中打印"This is child process.“,然后使用sleep函數(shù)讓子進程休眠5秒鐘。父進程中打印"This is parent process.”,然后調(diào)用wait函數(shù)等待子進程結(jié)束,并通過WIFEXITED宏檢查子進程是否正常結(jié)束,如果是正常結(jié)束,則通過WEXITSTATUS宏獲取子進程的退出狀態(tài)。