【发布时间】:2013-07-25 14:22:28
【问题描述】:
请在下面的cmd上给我解释一下:
touch temp.txt
touch temp1.txt
who > temp.txt &
cat temp.txt | wc -l >temp1.txt &
说一下 temp.txt 文件是一个空文件。
那么,执行后temp.txt 和temp1.txt 文件中会出现什么。
由于作业在后台模式下运行,有人能解释一下可能的情况吗?
【问题讨论】:
-
视情况而定。一般来说:坏事。
-
会发生未定义的行为。
-
与两个前台进程访问同一个文件的情况没有什么特别的不同。时间和缓冲都会在非确定性结果中发挥作用。
-
好的,所以基本上写入和访问之间存在差异。在这里你只写 temp.txt 和 READ temp.txt 之后,所以不会发生任何不好的事情。您将在一个文件中的行数以及在第二个文件中输出的人。这就对了。这里的后台工作很快,他们做一些事情并完成,所以这里没有真正的并行性。如果它们一直在运行,那么我们可以考虑不同的场景。
标签: multithreading shell unix process