1

CentOS ボックスに Windows 共有フォルダーをマウントしました。read システム コールを使用して巨大なファイルを読み取ろうとすると、ネットワーク接続が切断されると、読み取りがハングして、プログラムが中断できないスリープ状態になります。これは正しく聞こえません。O_NONBLOCK を使用してファイルを開いても、読み取りがハングします。読み取りが最終的にタイムアウトすることを望んでいましたが、そうではありません。エラーを返さずに読み取りが単にブロックされる場合、ネットワーク経由で信頼性の高いコピー操作をどのように実装しますか? 非同期モードと選択呼び出しの使用も私に役立つとは思いません。read は常にブロッキング呼び出しですか? ありがとうガナク

4

1 に答える 1

0

リモートファイルシステムをsmbではなくcifsとしてマウントしてみることができます。mount.cifssoftは、ネットワークまたはサーバーに障害が発生した場合にハングではなくエラーが返されるオプションをサポートしています(これもデフォルトです)。

マニュアルページから:

soft :(デフォルト)cifsにマウントされたファイルシステム上のファイルにアクセスするプログラムは、サーバーがクラッシュしてもハングせず、ユーザーアプリケーションにエラーを返します。

于 2012-06-20T22:17:33.320 に答える