【发布时间】:2017-05-28 04:55:48
【问题描述】:
我必须从 Perl 脚本启动一个 pdf 查看器。观看者应
与父进程和运行父进程的终端分离。如果我关闭父母或终端
查看器仍应保持运行。我考虑了三种方法(使用evince 作为 pdf 查看器命令):
-
使用
system和sh:system 'evince test.pdf &'; -
使用
fork():$SIG{CHLD} = "IGNORE"; #reap children as they complete my $pid = fork(); if ( $pid == 0 ) { exec 'evince', 'test.pdf'; } -
使用
Proc::Daemon:use Proc::Daemon; my $daemon = Proc::Daemon->new( work_dir => '/tmp/evince', child_STDOUT => '>>stdout.txt', child_STDERR => '>>stderr.txt', ); my $pid = $daemon->Init(); if ( $pid == 0 ) { exec 'evince', 'test.pdf'; }
这些方法之间有什么区别?您会推荐哪种方法?
【问题讨论】: