Ruby 中的 System() 命令不会等待子进程结束

问题描述 投票:0回答:1

我正在尝试编写一个 Ruby 脚本,该脚本进入目录中的每个子目录,然后执行多个命令。我正在使用 System() 命令来执行其中一些。根据文档,我认为 System() 应该等待子进程结束然后再继续。然而,它似乎并没有这样做。这是我的脚本的简化版本:

Dir.glob("**/") do |subdir|
     Dir.chdir(subdir) do
        system("gunzip *paired.fastq.gz")
     end
end

我希望它对第一个子目录中的一个或所有适当的文件运行gunzip,一旦这些gunzip进程结束,然后转到下一个子目录,依此类推。但现在,它只是同时为所有子目录中的文件创建gunzip 进程。我是否误解了 System() 文档?我应该使用其他命令吗?

谢谢!!!

ruby subprocess
1个回答
0
投票

您可以在运行命令的末尾添加

wait
,在您的情况下,它看起来像这样:

 system("gunzip *paired.fastq.gz; wait")
   
© www.soinside.com 2019 - 2024. All rights reserved.