我第一次尝试使用fork,所以我可以重定向用户的Web浏览器,然后继续处理.我查找了使用fork的代码,但我的子进程没有执行(即文件没有被创建).我究竟做错了什么?
#! /usr/bin/perl
if ($pid = fork) { }
else {
close STDOUT();
open(FILE,'>test.txt');
print FILE time;
close(FILE);
exit(0);
}
print "Location: http://mydomain.com/\n\n";
Run Code Online (Sandbox Code Playgroud)
STDOUT()使Perl查找一个名为的函数STDOUT,而不是查找函数,会中止您的子进程.
$ perl -we 'close STDOUT()'
Undefined subroutine &main::STDOUT called at -e line 1.
Run Code Online (Sandbox Code Playgroud)
你只需要说
close(STDOUT);
Run Code Online (Sandbox Code Playgroud)
要么
close STDOUT;
Run Code Online (Sandbox Code Playgroud)
即使您只能在Web浏览器中测试此程序,错误消息仍应显示在服务器错误日志中.