我有一个二进制可执行文件,当运行时写~10个左右的文件,也写到标准输出。由于某种原因,该程序不提供不写任何这些文件的选项。我想把这个程序作为一个python子进程来运行,但是为了减少I/O操作,我想阻止所有的文件被写到磁盘上,只收集标准输出,这可能吗?我试过subprocess.run用capture_output=True和其他一些标志运行www.example.com,但没有任何运气。提前感谢您的帮助!
dsekswqp1#
如果你有足够的内存,你可以使用/dev/shm。
/dev/shm
$ df -h tmpfs 16G 4,0K 16G 1% /dev/shm
假设你的二进制文件写入当前工作目录:
with tempfile.TemporaryDirectory(dir="/dev/shm") as workdir: p = subprocess.run(("binary",), capture_output=True, cwd=workdir)
如果内存有问题,您可以使用LD_PRELOAD覆盖open函数,并将写入重定向到/dev/null。
LD_PRELOAD
open
/dev/null
1条答案
按热度按时间dsekswqp1#
如果你有足够的内存,你可以使用
/dev/shm
。假设你的二进制文件写入当前工作目录:
如果内存有问题,您可以使用
LD_PRELOAD
覆盖open
函数,并将写入重定向到/dev/null
。