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 }