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水木清华站∶精华区