我想在perl中执行子进程.我还希望我的代码与平台无关(对于
windows和unix都是一样的,除了像filepath等一些故障).
问题是在Windows中perl实现fork,是一个伪进程,实际上是一个线程.请参阅windows here的perl fork仿真.
它还提到了在伪进程上执行kill和exec命令时出现的问题.在不同平台上使用两个不同版本的fork是否安全,还是应该使用特定于操作系统的API?
Forks::Super
已经担心并解决了很多这些可移植性问题,让你可以像我这样移植代码
use Forks::Super; $pid = fork(); if ($pid != 0) { ... if (kill 'ZERO',$pid) { print "Job is running.\n"; } kill 'STOP',$pid; # or $pid->suspend kill 'CONT',$pid; # or $pid->resume kill 'TERM',$pid; # or $pid->terminate waitpid $pid,0; # or $pid->wait or $pid->waitpid(0) }