um código numérico de saída, esse código vai de 0-255, e denota se o processo teve um erro ou não. Por convenção, o status de saída 0 significa que o processo foi com sucesso. at_exit { puts "Saindo..." } at_exit { puts "tchau!" } exit
pai e o novo processo criado é o filho. • O filho herda uma copia de toda a memoria usada pelo pai e todo os file descriptors • O filho ganha um PID próprio, ja que ele é um novo processo. Obviamente o PPID dele é do seu processo pai que chamou o fork (2) • O filho vai herdar uma copia dos file descriptors que foram criados pelo pai ate até o ponto do fork apenas.
um filho!" end end status = Process.wait abort "Adeus vida cruel..." favorite = fork do exit 10 end other = fork do exit 1 end pid, status = Process.waitpid2 favorite puts status.exitstatus
o processo esperar um processo filho terminar para continuar • Retorna o PID do processo filho • Process.wait2 retorna o pid e o status • Se passar um parametro para o wait, espera um filho com PID específico, mas nesse caso é melhor usar Process.waitpid • Voce pode passar -1 para o wait e pro waitpid pra esperar qualquer processo
processo. Não é a mesma coisa que um daemon. child_pid = fork { sleep 5 } Process.detach child_pid https://github. com/rubinius/rubinius/blob/master/kernel/comm on/process19.rb#L313
imediatamente • Core - termina o processo imediatamente e printa o stacktrace • Ign - ignora o sinal • Stop - para o processo (pause) • Cont - resume o processo
Interrupcao do keyboaard ctrl+c SIGQUIT 3 Core Quit do keyboard ctrl+\ SIGILL 4 Core Instrucao ilegal SIGABRT 6 Core Sinal Abort do abort(3) SIGFPE 8 Core Flotint point exception SIGKILL 9 Term Kill... SIGSEGV 11 Core Referencia invalida para memoria SIGPIPE 13 Term Broken pipe SIGALRM 14 Term Sinal do timer do alarm(2) SIGTERM 15 Term Sinal de termination SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 (unicorn usa eles) SIGCHLD 20,17,18 Ign Filho terminou SIGCONT 19,18,25 Cont Continuar se parado
copiados quando é feito um fork. reader, writer = IO.pipe fork do 10.times do writer.puts "Another one bites the dust" end end while message = reader.gets puts message end
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