Linux “与”的区别是什么;杀死0“;及;杀死-;--$$&引用;?
基本上,我想要一个bash脚本进程,在收到一个Linux “与”的区别是什么;杀死0“;及;杀死-;--$$&引用;?,linux,bash,shell,process,process-group,Linux,Bash,Shell,Process,Process Group,基本上,我想要一个bash脚本进程,在收到一个SIGINT后,在退出之前杀死它的所有子进程。我阅读时使用了以下内容: trap "kill -TERM -$$ ; exit 1" INT QUIT 我还阅读了使用杀死0: trap "kill -TERM 0 ; exit 1" INT QUIT 它们之间的区别是什么?它们是否满足以下要求(如果不满足,则满足什么要求?): 只杀死自身及其子进程(假设它是由终端命令启动的顶级进程) 它不会杀死同一shell脚本的任何其他进程或实例(从单独的终端
SIGINT
后,在退出之前杀死它的所有子进程。我阅读时使用了以下内容:
trap "kill -TERM -$$ ; exit 1" INT QUIT
我还阅读了使用杀死0
:
trap "kill -TERM 0 ; exit 1" INT QUIT
它们之间的区别是什么?它们是否满足以下要求(如果不满足,则满足什么要求?):
/foo.sh&
然后运行/foo.sh
时,杀死第二个进程或实例不应杀死第一个进程或实例,即使在同一tty中也是如此)进程ID为0表示执行
kill
命令的进程的进程组。负进程ID指的是进程组,其ID是进程ID的绝对值。这两个进程组可能不同,因为进程组可能会更改
对于第1项,它们应该是相同的(我假设您没有手动创建或影响流程组)。第2项并不重要,因为进程ID完全独立于进程中执行的脚本的名称。流程ID是引用特定流程的明确方式
请注意,谎报进程中执行的程序的名称并不重要,因此依赖
ps
中的名称通常是无用的:
exec -a someOtherName ./myScript
你没有回答我剩下的问题。