我正在编写一个可扩展的 shell 我正在处理一个与从 Unix 内核捕获 SIGCHLD 信号有关的问题。
我正在尝试维护当前作业的列表(因此当用户在 shell 中键入“作业”时,我可以返回适当的作业)。当我需要从列表中删除作业时,就会出现问题。当我收到 SIGCHLD 信号让我知道进程已终止时,我想将它们从列表中删除。
有两个问题: 1. 当我收到一个 SIGCHLD 信号时,我怎么知道是哪个孩子发出了那个信号?2. 如果收到多个 SIGCHLD 信号并且它们没有排队,所以我只会看到第一个 SIGCHLD 返回,我该如何处理?
谢谢!