2014-04-14 53 views
0

運行C文件,我需要從Ubuntu上另一個C程序中運行的C程序。像 scanf的東西,我//說我= 2進入從內另一個C文件在Ubuntu

switch (i){ 
case 1: print xyz; 
break; 
case 2: cc abc.c -lpthread (and then) ./a.out //execute this command to execute file with name abc 
break; 
} 

如何做到這一點?我徹底搜索了Google,但找不到合適的答案。


編輯:我現在從一個bash文件運行所述執行命令。它的工作原理,解決了我的一個簡單的方法要求:d

#! /bin/bash 
read a 
if [ $a -eq 1 ] 
then 
    cc ex.c -lpthread 
    ./a.out 
else 
    echo "hi" 
fi 
+5

你說你要'run'一個C程序,但你展示實例說話about'compiling'一個C程序。這是什麼? –

+0

hi..sorry..i需要編譯並運行also..edited .. @ OliverMatthews –

+0

你也可以做一個系統調用。允許您與shell進行交互,以便您可以編譯和運行該程序,或者您希望在shell中執行的任何其他操作。但它是同步的,這意味着在shell命令完成之前,程序不會繼續執行。如果你想在子程序運行的時候繼續下去,你需要在其他地方提到的fork。 – Trenin

回答

4

您需要使用fork() and exec()產卵關子過程(不管是什麼進程正在做 - 我注意到你在編譯和運行一個新的過程)。

如果你想產生一個進程並等待它,只需依靠返回(錯誤)代碼來確定成功,那麼system()是一個選項。

+1

或者只是使用['system()'](http://linux.die.net/man/3/system)庫函數。 – osgx

+0

@osgx - 當然!現在編輯也反映了這種可能性。 Thx –

+0

System()確實運行一個shell。 – Duck

2

可以運行系統函數來完成編譯和一個新的進程和EXEC可執行文件。

2

不妨填寫三大選項:popen如果你想在父C程序中處理你產卵的孩子的一些輸出。

如果您正在使用盡可能多的潛在產出的東西作爲編譯器fork & exec可能是不可避免的,你最終會。