在下面的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
谢谢!
答案 0 :(得分:0)
我了解test.jl
和test2.jl
都写入output.txt
,因此您必须先将文件移至另一个目录,然后才能运行test2.jl
或test2.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")
运行它。