系统命令如何在Perl和CGI下运行

时间:2016-09-19 18:30:34

标签: perl concurrency cgi

我在cgi下有一个Perl脚本,其中包含以下内容:

system ("echo mystuff > myfile.txt")

如果我同时使用两个请求来执行此操作,请同时尝试写入myfile,还是阻止,因为系统会导致fork并暂停父进程直到子进程完成?

2 个答案:

答案 0 :(得分:2)

如果脚本并行执行两次,那么它的两个实例都将调用system命令,echo的输出可能会出现乱码。这发生在CGI下或直接在命令行中运行脚本。如果您不喜欢这样,可以使用类似flock的内容来确保一次只运行一个进程,但如果您这样做则应该非常小心。

答案 1 :(得分:1)

使用传统的CGI,您的两个请求将在两个不同的进程中运行。两者都不会阻挡另一个。如果您运气不好(或有足够的流量),竞争条件可能会使myfile.txt的内容混乱。