gpt4 book ai didi

linux - C shell - 在后台获取作业以在完成后报告状态

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:54 25 4
gpt4 key购买 nike

我实现了一个简单的 c shell 来接收像 sleep 3 & 这样的命令。我还实现了它以在工作完成后“监听”sigchild 信号。

但是如何在完成后像 ubuntu shell 一样打印作业 ID 和命令?

最佳答案

我建议不要捕获 SIGCHLD 信号。

一个更简洁的方法是调用 waitpid使用 WNOHANG 选项。如果它返回 0,您就知 Prop 有该特定 pid 的作业仍在运行,否则该进程已终止并且您从 status 参数中获取其退出代码,然后打印相应的消息。

此外,bash 不会在作业完成时打印作业完成状态,而是在发出下一个命令时打印作业完成状态,因此这非常适合 waitpid

该方法的一个小缺点是作业进程在其终止和您调用 waitpid 之间的时间段内将保持为僵尸状态,但这对于 shell 可能无关紧要。

关于linux - C shell - 在后台获取作业以在完成后报告状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com