У меня есть какой-то рубиновый код (1.9), например
@rd,@wd = IO.pipe
def callback()
puts @wd.class
# do stuff
end
pid = fork do
@rd.close
register_callback(:callback)
end
@wd.close
# do some stuff in parent process
register_callback - это расширение C, которое выполняет системный вызов блокировки и при определенных условиях вызывает функцию ruby, связанную с переданным символом.
Однако @wd относится к типу NilClass в соответствии с сообщением, которое я получаю при запуске этой программы, и она пытается получить доступ к @wd в функции обратного вызова, что для меня не имеет никакого смысла. Любая помощь приветствуется.