系统命令在 Perl 和 CGI 下如何运行
How does system command behave under Perl and CGI
我在 cgi 下有一个 Perl 脚本,其中包含以下内容:
system ("echo mystuff > myfile.txt")
如果我同时用两个请求命中此请求,是两个请求都尝试写入 myfile,还是因为系统导致分叉并暂停父进程直到子进程完成而阻塞?
使用传统的 CGI,您的两个请求将 运行 在两个不同的进程中。两者都不会阻止对方。如果你不走运(或者有足够的流量),竞争条件可能会混淆 myfile.txt
.
的内容
如果脚本并行执行两次,那么它的两个实例都会调用 system
命令,echo
的输出可能会出现乱码。这发生在 CGI 下,或者如果您直接在命令行中 运行 脚本。如果你不喜欢那样,你可以使用 flock 之类的东西来确保一次只有一个进程是 运行,尽管你这样做时应该非常小心。
我在 cgi 下有一个 Perl 脚本,其中包含以下内容:
system ("echo mystuff > myfile.txt")
如果我同时用两个请求命中此请求,是两个请求都尝试写入 myfile,还是因为系统导致分叉并暂停父进程直到子进程完成而阻塞?
使用传统的 CGI,您的两个请求将 运行 在两个不同的进程中。两者都不会阻止对方。如果你不走运(或者有足够的流量),竞争条件可能会混淆 myfile.txt
.
如果脚本并行执行两次,那么它的两个实例都会调用 system
命令,echo
的输出可能会出现乱码。这发生在 CGI 下,或者如果您直接在命令行中 运行 脚本。如果你不喜欢那样,你可以使用 flock 之类的东西来确保一次只有一个进程是 运行,尽管你这样做时应该非常小心。