2011-11-21 55 views
1

我使用的系統()在Linux上推出了Evince決不返回,直到我打開一個文件,並試圖關閉它工作正常。當我嘗試關閉文件系統()永遠不會返回:系統()用了Evince

我的代碼:

char systemString[MAXPATHLEN]; 
sprintf(systemString, "%s", "evince"); 

int ret = system(systemString); 
if (ret == -1) 
{ 
    perror("system"); 
    exit(1); 
} 

任何想法,爲什麼?如果沒有,我怎麼調試這個,當它在調試器中使用它永遠不會返回它。該代碼是相當大,一些信號被阻止,但我嘗試了一些我認爲這使用和相同的錯誤。

謝謝

+1

當你從一個shell打開了Evince,它返回? –

+1

如果你從'sh'終端啓動'evince'你會遇到同樣的問題嗎?你有一些錯誤信息嗎? –

+0

不,只從程序內部,從cmd行sh就好了。我跑到另一個程序,以類似的方式啓動了Evince,它有沒有問題,但其較小的項目,它的東西,我的代碼,但我不知道它是什麼。如果它在此之前或之後造成它。 –

回答

0

我發現它,因爲SIGTERM被阻止,但程序。這是一個大型的傳統計劃。

+0

您是否嘗試過系統「表示出&");?這將導致subshel​​甚至之前了Evince退出或teminates在後臺運行,並返回到調用者了Evince。 – wildplasser

+0

謝謝,我想,但我發現有代碼阻塞信號的全斷面它不應該有,它解決了這個問題。 –

+0

「它不應該有的代碼阻塞信號部分」:語法錯誤。 – wildplasser