2011-05-18 73 views
0

我有一個C函數調用另一個軟件來執行並生成一個文件,然後它操縱數據,例如,在C系統調用

void main() 
{ 
function(); 
//manipulate data in output.txt 
}  
void execute() 
{ 
system("./test input.txt output.txt"); 
} 

對於沒有被充分產生的output.txt的文件中的一些原因...如何將系統調用的工作?在系統調用結束之前會執行返回主?如果是的話我該如何解決這個問題?我使用gcc在ubuntu上工作

+2

系統應該等待傳入的命令完成。也許錯誤發生在./test?你可以檢查系統的返回值來檢查(儘管你需要查閱Ubuntu的參考資料,看看有什麼數值表明了什麼)。 – dlev 2011-05-18 17:09:29

+2

請注意'。/'的意思是相對於當前工作目錄而不是包含你的目錄二進制文件。 – 2011-05-18 17:19:31

+0

還有一點很好,當input.txt是小文件時它工作正常,但是當input.txt很大時它就像一些數據沒有被處理......當我在代碼之外執行代碼時,它系統調用 – 2011-05-18 17:30:26

回答

6
  1. 檢查system()的結果總是。確保它成功執行(即返回0或任何成功的'test'結果)
  2. 當系統執行時,它通過/ bin/sh(在unix/linux上)運行。但是,由於您使用'./test'來指定它,請確保您在您認爲自己的工作目錄中運行。複雜的系統(設計不佳)會改變內衣等目錄。
+0

沒有開玩笑,在幾個地方的一段代碼中發現:system(「sleep 1」); – Andrew 2011-05-18 17:17:39

+0

哇... + 7chars。 – 2011-05-18 17:18:57