『なるほどUnixプロセス』を再読

fork(2)

if fork
puts 'enterd the if block'
else
puts 'enterd the else block'
end
enterd the if block
enterd the else block

デーモンプロセス

デーモンプロセスとは、制御端末から完全に分離されたバックグラウンドで動く常駐するプロセスである。制御端末から切り離す手順が説明されている。

  1. fork(2)して子プロセスを生成し、親プロセスを終了させる(端末の制御はユーザーに戻っている)
  2. 生成した子プロセスをプロセスグループとセッショングループのリーダーにする
  3. もう一度fork(2)して、子プロセス(プロセスグループのリーダーでもセッショングループのリーダーでもない)を生成し、親プロセスを終了させる
def daemonize_app
if RUBY_VERSION < "1.9"
exit if fork
Process.setsid
exit if fork
Dir.chdir "/"
STDIN.reopen "dev/null"
STDOUT.reopen "dev/null", "a"
STDERR.reopen "dev/null", "a"
else
Process.daemon
end
end

今後

OSに関連する書籍だと、次は『ふつうのLinuxプログラミング』と『Linuxシステムプログラミング』を読む予定。

--

--

Software engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store