デーモンプロセスを作ってみる
30分プログラム、その746。デーモンプロセスを作ってみました。
今まで、デーモン的なプログラムを作りたいときはnohupを使ってごまかしてきました。ただ、そろそろnohupと打つのも面倒になってきたので、ちゃんと調べてみました。
どうやら
- forkして親プロセスだけを殺す
- 子プロセスはsetsidする
あたりがポイントのようです。
使い方
$ perl daemon.pl create daemon process...
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- use strict; use warnings; use Data::Dumper; use POSIX qw(setsid); my $pid = fork(); if($pid != 0){ print "create daemon process...\n"; exit; }else{ umask 0; chdir '/'; open STDIN, '/dev/null'; open STDERR, '>/dev/null'; setsid; while(1){ print "hello\n"; sleep 5; } }