BBS水木清华站∶精华区
发信人: gudong (永远流浪), 信区: Unix
【 在 ROCKCHN (Cliff) 的大作中提到: 】
∶ 在一个终端上运行了一个程序,d此时另一用户想使用此终端,
∶ 如何使已经运行的程序继续运行,后台方式好象不行的
【 在 sinmo (西盟) 的大作中提到: 】
∶
∶ 后台方式运行可能会出问题,那是退出本用户,用其他用户注册,或者断电、
∶ 关终端等,这样,相当于父进程(SHELL)已死,子进程当然不能独活了。如果还
∶ 是用原来用户继续其他工作,是没有问题的,不知你属于那种情况。
∶
∶ 另外,在写这种程序时应关注SIGTERM、SIGHUP等信号的作用,UNIX核心会根
∶ 据实际当前情况传递软中断信号的,缺省是中断程序。
∶ 要解决这种脱离控制终端运行程序的问题,需要按守护进程的思路编制,UNIX
∶ 系统会告诉你这么编制脱离控制终端的程序的。
∶
∶
需要去编Daemon那么复杂么??
一般来说,当一个login session(从console或通过telnet、ssh登录到系统上)终止
时,其fork出的各个子进程都会终止,通常情况下,父进程终止时会其子进程都会收
到终止运行的信号。
Unix/类Unix系统都有一个Utility用来告诉kernel该进程不随父进程的终止而终止。
大多数都是"nohup"或"noh"命令.
比如:
nohup do_something &
就会使"do_something"进程在后台运行并且不受父进程退出的干扰。当然,nohup/noh
对前台运行的进程同样有效。
BBS水木清华站∶精华区