Я установил общую папку Windows в поле centos. Когда я пытаюсь прочитать огромный файл, используя системный вызов, и если сетевое соединение прерывается, чтение просто зависает и помещает мою программу в состояние бесперебойного сна. Это звучит не так. Даже если я открою файл, используя O_NONBLOCK, даже тогда чтение будет зависать. Я надеялся, что чтение закончится, но это не так. Как реализовать надежную операцию копирования по сети, если чтение просто блокируется, не возвращая никакой ошибки? Я не думаю, что использование async-режима И выберите вызов, который мне тоже поможет. Всегда читается ли блокирующий вызов? Спасибо GhanakuПрочитать системный вызов для файла, находящегося на узле smb, вечно вечно, если сетевое соединение нарушено?
1
A
ответ
0
Вы можете попробовать установить удаленную файловую систему как cifs вместо smb. mount.cifs поддерживает параметры soft
(а также по умолчанию), что приведет к возврату ошибки в случае сбоя сети или сервера, а не зависания.
От человека странице:
мягкий: (по умолчанию) Программа доступа к файлу на CIFS смонтированной файловой системы не будет висеть, когда сервер выходит из строя и будет возвращать ошибки приложению пользователя.
Вы можете получить более эффективный ответ, если опубликовать некоторые фрагменты кода и вашу конфигурацию Smb, очевидно, сначала удалив любую конфиденциальную информацию. – Chilledrat