Что ж, системные вызовы, которые вы выполняете (прямо или косвенно через стандартную библиотеку), не будут работать, если исходное устройство внезапно пропадет.
Если вы используете простой старый <a href="http://linux.die.net/man/2/read" rel="nofollow">read()</a>
для чтения с USB-накопителя, я ожидаю, что он потерпит неудачу, и установите errno
на EIO
, как указано в документации:
Это также может произойти при низкоуровневой ошибке ввода-вывода при чтении с диска или ленты.
То, что привод принудительно отключен в середине чтения, для меня звучит как «ошибка ввода-вывода низкого уровня».
Вероятно, проще всего сначала обнаружить сбой, как описано выше, что, конечно, ваш код копирования уже сделает, а затем в качестве последующей попытки поставить диагноз того, что пошло не так и вызвало ошибку, вы можете возможно, осмотрите монтажный стол, чтобы убедиться, что устройство все еще рядом.