1

次のコードを実行しています。

void EnumerateFolder(std::string folder)
{ 
    DIR* directory;
    struct dirent* entry;

    directory = opendir(folder.c_str());
    if(directory != NULL)
    {
        while((entry = readdir(directory)) != NULL)
        {
            std::cout << entry->d_name;
        }
    }
}

readdir() を持っているマウントされた CIFS フォルダーに到達すると、戻るのに15 分かかることがあります。何が起こっているのか、どうすればよりフレンドリーな体験を実現できるのか、誰か教えてくれませんか? これは、コードを実行するたびに発生し、共有フォルダーのあるコンピューターはオフラインです。また、おそらく共有フォルダーのハードドライブを備えたコンピューターが「アイドル」の場合に、(私が知る限り)任意に発生します。

フォルダはどのようにマウントされていますか?

cat /etc/fstab
//192.168.0.6/MyShare /home/MyUser/MountedShare cifs guest 0 0

問題があれば、192.168.0.6 は Windows 8 を実行しています。ありがとう!

4

1 に答える 1

1

15 秒が標準のCIFS Send2 タイムアウトです。より速く失敗したい場合はtimeo、マウント オプションにオプションを設定できます。タイムアウトを 10 分の 1 秒単位で指定します。

ファイルシステムは、アプリケーションがファイルを読みたい理由を本当に知りません。たとえば、実行可能コードのページで障害が発生している場合、高速タイムアウトは長時間実行されているプロセスを中断する可能性があります。したがって、一般的に言えば、ネットワーク ファイルシステムは、下層のストレージが応答するのに必要なだけ待機するローカル ファイルシステムのセマンティクスを模倣しようとします。

于 2013-04-08T19:16:41.847 に答える