『なるほど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

今後

--

--

--

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
Takanori Ishibashi

Takanori Ishibashi

Software engineer

More from Medium

MIT’s FutureMakers programs help kids get their minds around — and hands on — AI

Astronaut standing on a giant marble with 3 other giant marbles in the background. Text says “FutureMakers”

Where Are They Now? — Joe Martin, ZF Friedrichshafen AG

The 100th Scraping Tutorial You’ll Probably Read

Why Chess?