对于我的学校作业,我的教授希望我存储我用我的程序制作的后台进程的状态并存储在进程表中,每个进程条目都是"正在进行中"或者"完成"。要检查某个流程是否已完成(已终止),我的教授需要我使用waitpid()来执行此操作。
我不知道如何做到这一点,因为如果我遍历我在后台创建的所有进程(一堆睡眠())并且我检查每个进程通过检查waitpid()是否将每个进程的id作为waitpid()的参数并返回-1以外的其他内容(不是错误),然后当我真的只想知道时,每个进程都会跳转到前台如果该过程终止。
教授的原始问题:
BACKJOBS:打印后台作业列表及其当前状态的命令。此功能类似于使用tcsh时的jobs命令。可以通过使用waitpid系统调用来确定每个作业的当前状态(即,正在进行或已完成)(有关更多信息,请参阅man waitpid)。报告错误的呼叫将是已完成的呼叫,因此它们的状态将“完成”。不会导致错误的调用将处于“进行中”状态。