当前位置: 技术问答>linux和unix
关于daemon进程的问题
来源: 互联网 发布时间:2016-04-07
本文导语: pc进程是我自己写的一个进程 pc&后台起他,然后通过pc起一个子进程a,ctrl+c,a进程退出 我做过实验,后台进程,按ctrl+c,它是不会退出的 我想问后台进程的子进程是不是后台进程还是前台进程 如果是后台进程,a...
pc进程是我自己写的一个进程
pc&后台起他,然后通过pc起一个子进程a,ctrl+c,a进程退出
我做过实验,后台进程,按ctrl+c,它是不会退出的
我想问后台进程的子进程是不是后台进程还是前台进程
如果是后台进程,a进程不会死亡阿,如果是前台进程的话,shell应该一直阻塞在那阿
我把pc变成daemon进程后,pc& ,通过pc起一个子进程a,ctrl+c,a进程不会退出
是不是因为pc进程退出控制台控制以后,a进程也退出了控制台控制
ctrl+c是不是由控制台发出信号的?
pc&后台起他,然后通过pc起一个子进程a,ctrl+c,a进程退出
我做过实验,后台进程,按ctrl+c,它是不会退出的
我想问后台进程的子进程是不是后台进程还是前台进程
如果是后台进程,a进程不会死亡阿,如果是前台进程的话,shell应该一直阻塞在那阿
我把pc变成daemon进程后,pc& ,通过pc起一个子进程a,ctrl+c,a进程不会退出
是不是因为pc进程退出控制台控制以后,a进程也退出了控制台控制
ctrl+c是不是由控制台发出信号的?
|
你理解错了。
你从终端登录时会起一个session,这个session的首进程就是你的登录shell,shell也就是这个终端的控制进程,每个控制终端的有一个前台进程组,通常情况下前台进程组就是shell所在的进程组,当你不带&启动一个程序时,这个程序及其子进程就成了这个终端的前台进程组,当你在终端敲ctrl+c时,会发一个退出信号给前台进程组的所有进程,所以所有属于前台进程组的信号会退出。当你加&运行时,shell会先fork一个进程,这个进程再fork一个子进程执行你的程序(pc)然后退出,这样你的pc进程组就成了一个孤儿进程组也就成了一个后台进程组。所以ctrl+c对它没有影响。
你从终端登录时会起一个session,这个session的首进程就是你的登录shell,shell也就是这个终端的控制进程,每个控制终端的有一个前台进程组,通常情况下前台进程组就是shell所在的进程组,当你不带&启动一个程序时,这个程序及其子进程就成了这个终端的前台进程组,当你在终端敲ctrl+c时,会发一个退出信号给前台进程组的所有进程,所以所有属于前台进程组的信号会退出。当你加&运行时,shell会先fork一个进程,这个进程再fork一个子进程执行你的程序(pc)然后退出,这样你的pc进程组就成了一个孤儿进程组也就成了一个后台进程组。所以ctrl+c对它没有影响。
|
讲得很好。。。。楼主仔细看看把。