Я вошел в систему как пользователь root, чтобы поиграться с /dev/mem
с Ruby 2.6.0 в Arch Linux.
Это работает, когда я пишу:
File.open('/dev/mem', 'r') { |x| puts x.readpartial(50) }
Или:
File.open('/dev/mem', File::RDONLY) { |x| puts x.readpartial(50) }
Но это вызывает Errno::EPERM (Operation not permitted @ io_fread - /dev/mem)
, когда я пытаюсь:
File.read('/dev/mem')
Или:
File.open('/dev/mem', File::RDONLY) { |x| puts x.read }
Почему метод чтения из класса File не может 't читать / dev / mem, а readpartial может?