バックグラウンドで動作させる関数

Back


プログラムをデフォルトでバックグランドジョブ (システムデーモン)として動作させるための関数があります。
この関数を呼ぶようにすると、いちいち起動時に"&" をつける手間が省けます。

#include <unistd.h>

int daemon(int nochdir, int noclose);
引き数 nochdir が 0 の場合、ワーキングディレクトリを '/' になるそうです。
引き数 noclose が 0 の場合、標準入出力とエラーを /dev/null にリダイレクト、 ようするに表示しないようにします。表示したい場合は適当に 1 などを入れておけばよいみたいです。


daemon関数を使った例
#include <unistd.h>
#include <stdio.h>

int main(int argc,char *argv[]){
  int i;

  daemon(1,1);

  for(i=0;i<10;i++){
    printf("%d\n",i);
    sleep(1);
  }

  return 0;
}
コンパイルして、'&'をつけないで起動させてもバックグラウンドで動作することが確認できます。
August 25, 2003
Hidetada Baba <baba@daq.rikkyo.ac.jp>