gpt4 book ai didi

ruby - 在 Ruby 中使用 system() 时 Ctrl-C 不会退出程序

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:10 24 4
gpt4 key购买 nike

我有这个程序:

5.times do |i|
puts "Iteration #{i}"
system("sleep 3")
end

我想在 2 次迭代之后退出这个程序,使用 Ctrl-C

如果我按 Ctrl-C,会发生这种情况:

➜  tmp  ruby system.rb 
Iteration 0
^CIteration 1
^CIteration 2
^CIteration 3
^CIteration 4
^C%

无论如何,system() 命令都会运行 5 次。

我该怎么做才能使用 Ctrl-C 退出执行?

最佳答案

Kernel#system在子 shell 中执行给定的命令。这意味着 Ctrl-C 将进入那个子 shell 而不是你的 ruby​​ 脚本,所以把它困在那里是没有用的。但是,该命令会返回一个值,该值指示它是否已成功完成。当命令通过 Ctrl-C 停止时,它不会算作成功完成。因此,检查返回值。

5.times do |i|
puts "Iteration #{i}"
success = system("sleep 3")
break unless success
end

关于ruby - 在 Ruby 中使用 system() 时 Ctrl-C 不会退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155927/

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