ruby – 如何等待系统命令结束

我正在使用 Ruby中的系统命令转换XLS 2 CSV文件.

在转换之后,我正在处理CSV文件,但是当程序想要处理文件时,转换仍在运行,因此那时它们不存在.

有人能告诉我是否可以让Ruby等待系统命令完成所需的时间?

现在我正在使用:

sleep 20

但如果它需要更长的时间,那当然是不对的.

我具体做的是:

#Call on the program to convert xls
command = "C:/Development/Tools/xls2csv/xls2csv.exe C:/TDLINK/file1.xls"
system(command)
do_stuff

def do_stuff
#This is where i use file1.csv,however,it isn't here yet
end

解决方法

Ruby的系统(“…”)方法是同步的;即它等待它调用的命令返回退出代码,如果命令以0状态退出,则系统返回true,如果退出非0状态则返回false. Ruby的反引号返回了命令的输出
a = `ls`

将a设置为一个字符串,其中包含当前工作目录的列表.

因此,似乎xls2csv.exe在完成它应该执行的操作之前返回退出代码.也许这是一个Windows问题.所以看起来你必须循环直到文件存在:

until File.exist?("file1.csv")
  sleep 1
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...