在C語言中,可以使用`wait()`函數來等待子進程的結束。以下是`wait()`函數的調用方法:
```c
#include
#include
#include
int main() {
pid_t child_pid = fork();
if (child_pid == 0) {
// 子進程代碼
// ...
} else {
// 父進程代碼
wait(NULL); // 等待子進程結束
}
return 0;
}
```
在上面的示例中,我們首先使用`fork()`函數創建了一個子進程。然后,在父進程中,通過調用`wait(NULL)`函數來等待子
進程的結束。當子進程結束時,父進程會從`wait()`函數返回。
如果你想獲取子進程的退出狀態,可以使用`wait()`函數的參數來保存子進程的狀態信息。例如:
```c
#include
#include
#include
#include
int main() {
pid_t child_pid = fork();
if (child_pid == 0) {
// 子進程代碼
// ...
return 42; // 子進程退出狀態為42
} else {
// 父進程代碼
int status;
wait(&status); // 等待子進程結束,并保存子進程的狀態信息
if (WIFEXITED(status)) { // 子進程正常退出
printf("子進程退出狀態:%d\n", WEXITSTATUS(status)); // 打印子進程的退出狀態
}
}
return 0;
}
```
在上面的示例中,子進程通過`return 42;`語句返回了退出狀態為42。父進程在調用`wait(&status)`時,會把子進程的狀態
信息保存在`status`變量中,并通過`WIFEXITED(status)`宏判斷子進程是否正常退出。如果子進程正常退出,可以使用
`WEXITSTATUS(status)`宏獲取子進程的退出狀態。
需要注意的是,如果父進程在調用`wait()`函數時,子進程還沒有結束,則父進程會阻塞等待子進程的結束。