gpt4 book ai didi

Julia:在给定的时间内运行外部进程并捕获其输出

转载 作者:行者123 更新时间:2023-12-04 12:53:06 30 4
gpt4 key购买 nike

我想在 Julia 中运行一个外部进程一段给定的时间(比如 10 秒)并捕获它的输出。
我试过类似 readchomp(`timeout 5 sleep 10`) (用任意外部进程替换 sleep 10)。但是,如果进程被 timeout 杀死,则会抛出 ProcessFailedException并且我无法读取它生成的程序的输出,直到它被杀死。

最佳答案

run只有在 wait = true 时才会抛出异常(默认情况下是这样)。您需要将该 kwarg 设置为 false,然后手动设置 wait在进程中,同时重定向 stdout例如IOBuffer来自 pipeline :

shell> cat loop.sh
#!/bin/bash

for i in {1..10}; do
echo $i
sleep 1
done


julia> b = IOBuffer()
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=Inf, ptr=1, mark=-1)

julia> p = run(pipeline(`timeout 5 ./loop.sh`, stdout = b), wait = false); wait(p)

julia> p
Process(`timeout 5 ./loop.sh`, ProcessExited(124))

julia> String(take!(b))
"1\n2\n3\n4\n5\n"

关于Julia:在给定的时间内运行外部进程并捕获其输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69604662/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com