如何打开文件并将内容作为已执行命令的输出?

时间:2017-12-07 04:32:29

标签: file unix random

例如:

打开/阅读 /var/command_result.txt的内容是执行sysctl -x -B 16 kern.arandom.的结果

因此,每次/var/command_result.txt 打开/阅读时,内容都是不同的随机数

由于

1 个答案:

答案 0 :(得分:0)

使/var/command_result.txt成为命名管道,并且有一个可以反复打开并写入的进程?如果你需要一个读取文件的并发进程,那么它不会很好用,但如果它只是用于顺序测试,那就没问题。

$ mknod  /tmp/command_result.txt p
$ perl -we '$a=0;
   while(1){
     open(STDOUT,">","/tmp/command_result.txt");
     print "$a\n";
     $a++;
   }' &
[1] 31811
$ head -1 /tmp/command_result.txt
0
$ head -1 /tmp/command_result.txt
810
$ head -1 /tmp/command_result.txt
2431
$ cat /tmp/command_result.txt | head -1
3397

如您所见,head在输出结果之前会读取多行。当我在彼此之后非常快速地运行头部命令时,我在perl侧出现了管道错误。陷阱可以解决这个问题。