我一直试图通过向它发送SIGTERM信号(就像守护进程通常的情况一样)来创建一个停止的守护进程。守护进程获得了一些在运行后应该释放的资源,我希望使用括号来进行此操作。我注意到,当程序以SIGTERM结束时,括号的清理部分没有运行。当我用ctrl-c中断程序时,它的行为与预期相似,并在退出时打印“and”,但当我用killall -TERM test (可执行文件名为test)杀死它时,它会打印"Beendet“(德语中的”and“),因此括号的最后部分不会运行
我对所有这些细节以及它们如何在Linux中相互关联感到有点困惑。"Unix内部“一书指出,lightweight process (LWP)是内核支持的用户线程,内核看不到进程内部的线程。对于Linux,这仍然是正确的吗?
据我所知,用户空间线程被安排在进程内部,通过更高层次的抽象作为pthread库,而不需要内核的干预。我说的对吗?
我想等到有三个进程在运行,所以我使用了until循环。当检查一个进程时,这是有效的:但是,我无法添加其他条件。如果我将条件放在单方括号或双方括号中,我会得到错误。具体来说,这两种方法都失败了。pgrep my-process ]]; do echo "waiting…"; done
until [ pgrep my-process ]; do echo "w