我在cgi下有一个Perl脚本,其中包含以下内容:
system ("echo mystuff > myfile.txt")
如果我同时使用两个请求来执行此操作,请同时尝试写入myfile,还是阻止,因为系统会导致fork并暂停父进程直到子进程完成?
答案 0 :(得分:2)
如果脚本并行执行两次,那么它的两个实例都将调用system
命令,echo
的输出可能会出现乱码。这发生在CGI下或直接在命令行中运行脚本。如果您不喜欢这样,可以使用类似flock的内容来确保一次只运行一个进程,但如果您这样做则应该非常小心。
答案 1 :(得分:1)
使用传统的CGI,您的两个请求将在两个不同的进程中运行。两者都不会阻挡另一个。如果您运气不好(或有足够的流量),竞争条件可能会使myfile.txt
的内容混乱。