Actions
Bug #21456
openIO.close does not work in a rescue IO::TimeoutError block.
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.8 (2025-03-26 revision 13f495dc2c) [x86_64-linux]
Description
Invoking the close method on an IO object based on popen will forcefully close the process (not sure what signal it sends, it's undocumented), however when you handle a IO::TimeoutError exception (which you can get when you set .timeout), the close method fails to end the process. It's going to block until the process naturally terminates.
Sample code (linux based) --
execArg = 'echo testwrite; sleep 10'
tofuProcess = IO.popen(execArg, 'r')
puts 'executed tofu process.'
tofuProcess.timeout=5
begin
tofuOut = tofuProcess.read
rescue IO::TimeoutError
puts 'rescue occured'
tofuProcess.close
puts 'process closed'
end
Updated by dE (dE Techno) about 22 hours ago
- Subject changed from IO.close does not work in a IO::TimeoutError block. to IO.close does not work in a rescue IO::TimeoutError block.
Updated by nobu (Nobuyoshi Nakada) about 18 hours ago
- Description updated (diff)
Actions
Like0
Like0Like0