我有一个程序可以将一些信息打印到标准输出,然后像这样运行它:
watch -n 0.1 myprogram
我的问题是我需要myprogram
干净地退出,调用适当的析构函数来释放系统范围的互斥体。如果我按CTRL+ C,则会watch
被杀死并且myprogram
没有机会干净地退出。
有没有办法watch
干净地退出,以便它等待子进程完成后再返回?
该man
页面简单地说:
手表将运行直到被中断
答案1
关于你问题的第一部分“有没有办法干净地退出手表?“,是的,您可以通过发送信号来停止进程。
首先你需要找出正在运行的进程 ID (PID)watch
。您可以通过名称来执行此操作:
pidof watch
或由用户和如何在 Unix/linux 中查看特定用户创建的进程
ps -u ${USER} | grep -i watch | cut -d " " -f 1
进而watch
通过发送信号停止喜欢
kill -IT ${PID}
kill -INT $(pidof watch)
你问题的第二部分更多关于处理信号。