命名管道不会等到bash完成

时间:2018-01-29 22:09:13

标签: bash redirect julia named-pipes

在下面的test.jl中创建一个output.txt并生成一些控制台输出。控制台输出处理得很好。但是,即使在完全创建output.txt之前,控制也会在echo之后立即返回。在echo和mv之间放置一个等待导致无限期等待。是否应该将回车传递给管道而不杀死管道?

mkfifo pipe
sleep 1000000 > pipe &
julia <pipe >stdout.txt 2>stderr.txt &

echo "include(\"test.jl\")" > pipe
mv output.txt temp/
echo "include(\"test2.jl\")" > pipe

谢谢!

1 个答案:

答案 0 :(得分:0)

我了解test.jltest2.jl都写入output.txt,因此您必须先将文件移至另一个目录,然后才能运行test2.jltest2.jl期望{在output.txt目录中{1}},您必须在temp/运行之前将其移至那里。

如果是,则以下代码应解决问题:

text2.jl

通过这种方式,Julia运行mkfifo pipe sleep 1000000 > pipe & julia <pipe >stdout.txt 2>stderr.txt & echo "include(\"test.jl\")" > pipe echo "mv(\"output.txt\", \"temp/\")" > pipe echo "include(\"test2.jl\")" > pipe 命令,确保它在mv之后但在test.jl之前执行。

但实际上我们已经达到了这样一个程度,即编写一个名为egia的Julia脚本会更好。 test2.jl

script.jl

并使用include("test.jl") mv("output.txt", "temp/") include("test2.jl") 运行它。