gpt4 book ai didi

python - 通过子进程对WSL的fish执行命令

转载 作者:行者123 更新时间:2023-12-02 01:56:09 24 4
gpt4 key购买 nike

我已经安装了 WSL(Ubuntu),现在我想从 WSL 访问 Fish 并从中执行诸如 date 之类的命令。我怎样才能这样做?

这是我的尝试!

import subprocess
subprocess.run(["wsl", "fish"], shell=True)
subprocess.run(["date"], shell=True)

输出显示了代码第二行之前的执行情况,但没有显示 fish 终端中 date 命令的执行情况。有什么解决办法吗?

最佳答案

使用您的命令,第一个 subprocess.run() 启动一个进程,然后等待它完成。如您所知,wsl Fish 实际上并不会自行完成,这意味着您的 Python 应用程序现在将无限期地阻塞。

您真正想要做的是启动一个进程,通过其 STDIN 向其发送数据,并读取其 STDOUT 输出。

但你不能完全像这样做 - 对于 1,你不想阻止解释器!

proc = Popen(["wsl", "fish"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = proc.communicate(b"date")
print(output)

communicate 也会阻塞。如果你想保持这个运行,你可以执行 proc.stdin.write() ,然后执行 proc.stdout.readline()

关于python - 通过子进程对WSL的fish执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69586798/

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