2013-07-29 65 views
1

我在CentOS 6.0上使用Qt 4.7。 我有安裝有CIFS遠程共享文件夾:QDir在連接時訪問CIFS遠程文件夾時掛起

mount -t cifs //PC128/mnt /media/net -o username=user,password=pwd,rw,noexec,soft,uid=user,gid=user 

當遠程文件夾被以某種方式不正確地斷開(例如,網絡電纜被拉出)我的應用程序掛起因爲試圖觸摸的文件夾的QDir鎖(例如一個QDir ::存在調用)。約90秒後解鎖並返回false。

它看起來正確的 - 超時

回答

1

QDir採用同步文件API。當底層文件系統凍結時,它也會凍結。有兩個選項可以避免GUI凍結:

1.將文件操作移至單獨的線程。使用信號/插槽連接請求線程執行QDir::exists調用並將結果傳遞迴GUI線程。如果文件系統凍結,只有後臺線程將被凍結。 GUI仍將運行。

2.使用使用異步文件API的庫。這個庫所做的任何請求都會立即將控制流返回給您的應用程序。結果將傳遞給回調函數。有關可用選項,請參閱this question

+0

我試圖進一步研究CIFS超時,但它接近無法改變它們。所以是的,我要實施解決方案1 ​​+手動超時。 –