【Linux】デーモンプロセスの定義、役割、作成プロセス

6225 ワード

この文書の内容は次のとおりです.
1.デーモンプロセスの定義
2.プロセスを守る役割
3.デーモンプロセスの作成プロセス
一.デーモンプロセスの定義
1.デーモンプロセスは、端末から離れてバックグラウンドで実行されるプロセスである
2.デーモンプロセスが端末から離脱するのは、実行中の情報がどの端末にも表示されず、どの端末が生成した端末情報にも中断されないようにするためである
3.通常、デーモンプロセスはシステムブートの読み込み時に開始します.
二.プロセスを守る役割
1.デーモンプロセスは、通常、制御端末とは独立して、あるタスクを周期的に実行したり、発生するイベントの処理を待ったりする長い生存期間のプロセスです.
2.ほとんどのサービスは、デーモン・プロセスによって実現されます.
3.端末を閉じると、対応するプロセスが閉じられますが、デーモンプロセスはこのような制限を突破することができます.
三.デーモンプロセスの作成プロセス
背景知識:
1.プロセスグループ:1つ以上のプロセスの集合で、プロセスグループはプロセスグループIDによって識別され、プロセスグループ長のプロセスIDとプロセスグループIDは一致し、プロセスグループIDはプロセスグループ長の脱退によって影響を受けない
2.セッション・サイクル:ユーザーがログインから終了するまでの1つ以上のプロセス・グループの集合.この期間、ユーザーが実行するすべてのプロセスは、そのセッション・サイクルに属します.
3.setsid関数:新しいセッションを作成し、そのセッショングループのリーダーを務め、setsid関数を呼び出す目的:プロセスを元のセッション、元のプロセスグループ、元の端末の制御から解放する
デーモンプロセスを作成する手順は、次のとおりです.
1.子プロセスの作成、親プロセスの終了
サブプロセスは孤児プロセスになり、1番のinitプロセスで養子縁組されます.
2.サブプロセスによる新規セッションの作成
setsidを呼び出して新しいセッションを作成し、元のセッション、元のプロセスグループ、元の端末の制御から抜け出し、自分で新しいセッションのグループ長になる
3.現在のディレクトリをルートディレクトリに変更
実行中のプロセスファイルシステムはアンインストールできません.ディレクトリがロールバックされる場合、このプロセスはできません.このような面倒を避けるために、ルートディレクトリを現在のディレクトリとします.
4.ファイル権限マスクのリセット
サブプロセスのファイル権限マスクはコピーされた親プロセスであり、再設定しないと、サブプロセスがファイルを使用するのに多くの面倒をもたらす
5.不要なファイル記述子を閉じる
サブプロセスのファイル記述子も親プロセスからコピーされ、不要なファイル記述子は保護プロセスに使用されず、システムリソースを無駄にし、ファイルシステムが終了しない可能性があります.
サンプルプログラム:デーモンスレッドは100 sおきにファイルに一言書きます
#include 
#include
#include
#include
#include<string.h>
#include
#include
#include
#include
#include
#include
#include
using namespace std;

#define max_file 65535

int main()
{
    pid_t pc;
    int fd,len;

    char buf[]="this is a demo
"; len=strlen(buf); pc=fork();// if(pc<0) { cout<<"fork error"<<endl; exit(1); } else if(pc>0) { exit(0);// } else { setsid();// chdir("/");// umask(0);// for(int i=0; i) { close(i);// } while(1) { if((fd=open("/tmp/dameo.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0) { cout<<"open erro"<<endl; exit(1); } write(fd,buf,len+1); close(fd); sleep(100);// 100s } } }