我正在net share
从 ruby 脚本运行以删除 Windows 网络共享。
如果共享上的文件正在使用中,则会询问用户是否要继续删除,因此我的脚本需要检查命令的输出,并在检测到是否要求输入net share
时写出。Y
net share
为了能够写出进程,我用 access flags 打开它"r+"
。
尝试使用 写入进程时IO#puts
,出现错误:
Errno::EPIPE: Broken pipe
我在这里做错了什么?(出现错误就行了net_share.puts "Y"
)
(写出的问题文本net share
后面没有换行符,所以我IO#readpartial
用来读取输出。)
def delete_network_share share_path
command = "net share #{share_path} /DELETE"
net_share = IO.popen(command, "r+")
text = ""
while true
begin
line = net_share.readpartial 1000 #read all the input that's available
rescue EOFError
break
end
text += line
if text.scan("Do you want to continue this operation? (Y/N)").size > 0
net_share.puts "Y"
net_share.flush #probably not needed?
end
end
net_share.close
end