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