UNIX中的精靈程式 (轉)

gugu99發表於2007-12-29
UNIX中的精靈程式 (轉)[@more@]

  中的精靈程式
UNIX中有許多在後臺執行,並且無控制終端的程式。我們把它叫精靈程式。在UNIX中我們可以用 ps  -ef 檢視,其TTY項用?標記。本文就精靈程式的特徵,以及如何編寫作一些探討:
一 特徵和編寫規則

1. 因為精靈程式是在後臺執行,所以首先fork()生成一個子程式,然後使父程式exit()。
2. 呼叫setsid()建立一個新的對話期。
3. 設定其工作目錄。(chdir())
4. 將建立遮蔽字設定為0 。(umask(0)) 
5. 關閉不再需要的檔案描述符。(close(int))
二 例子
# include
# include
int
main(void)
{
  int pid ;
  int s_pid ;
  FILE *fp ;

  if(( fp = fopen("/usr/log","w+")) == NULL)
  {
  fprintf(stderr,"Log File Open Error !n") ;
  exit(0) ;
  }
  if((pid =fork()) < 0)
  return -1 ;
  else
  if( pid > 0 )
  exit(0) ;
  else
  {
  s_pid = setsid() ;
  fprintf(fp,"SetSid := %d",s_pid) ;
  umask(0) ;
  chdir("/usr") ;
  close(0) ;
  close(1) ;
  close(2) ;
  sleep(100) ;
  fclose(fp) ;
  return 0 ;
  }

  精靈程式執行過程中的有關資訊在/usr/log檔案中。


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-996041/,如需轉載,請註明出處,否則將追究法律責任。

相關文章