你有serveral的方式將數據傳輸到另一個程序。 (pipin',files,and way more。稍後我可以編輯我的答案,並在必要時給出有關在兩個C程序之間發送數據的更加標準的指南) 讓我們來看看execl()
您的情況。
我們必須首先同意程序jkl.o將由您的主程序啓動,並將接收包含參數的字符串作爲其開始參數。
讓我們看看execl的()的男人:
的爲const char * ARG和隨後的橢圓在execl的()),execlp(, 和execle()函數可以被認爲是爲arg0 ,arg1,...,argn。 它們一起描述了一個或多個指向 空指針字符串的列表,該指針表示可用於 執行的程序的自變量列表。按照慣例,第一個參數應該指向 與正在執行的文件關聯的文件名。 參數列表必須由NULL指針終止,並且,因爲這些是可變參數函數,所以此指針必須被強制轉換(char *)NULL。
好的。所以你首先必須給execl()你的路徑,然後在每一行中添加一個參數。你指出你需要分叉,這是真的。所以讓我們這樣做,我們分叉,然後我們發送一個包含你的transferme的字符串。我將假設這個變量是一個常規字符串。
child_pid = fork()
/* fork() == 0 for child process */
if(child_pid == 0)
{
/*executing jkl.o */
execl("/home/user/a.out", "a.out" , transferme); /* with a.out being your second program, you can change that to whatever you'd want*/
}
/* parent stuff*/
這應該可以做到。
[更新自評:]
我忘了argv[0]
(即execl
第二個參數必須是程序本身的名稱。),所以儘量
execl("/home/user/d.out", "d.out", transferme, (char*) NULL);
'XYZ。 c'和'jkl.c'不是程序,它們是_source files_ – Eregrith
只是爲了確認,'jkl.c'是另一個源代碼文件還是可執行文件? – user1978011
它們每個都有'main'功能嗎? – Eregrith