1 #include <sys/wait.h>
2 #include <libsystem/syscall.h>
3 
4 /**
5  * @brief 等待所有子进程退出
6  *
7  * @param stat_loc 返回的子进程结束状态
8  * @return pid_t
9  */
wait(int * stat_loc)10 pid_t wait(int *stat_loc)
11 {
12     return waitpid((pid_t)(-1), stat_loc, 0);
13 }
14 
15 /**
16  * @brief 等待指定pid的子进程退出
17  *
18  * @param pid 子进程的pid
19  * @param stat_loc 返回的子进程结束状态
20  * @param options 额外的控制选项
21  * @return pid_t
22  */
waitpid(pid_t pid,int * stat_loc,int options)23 pid_t waitpid(pid_t pid, int *stat_loc, int options)
24 {
25     return (pid_t)syscall_invoke(SYS_WAIT4, (uint64_t)pid, (uint64_t)stat_loc, options, 0, 0, 0, 0, 0);
26 }