[英]How do you call a C program from within another C program
我有兩個C程序,Project1A.c和Project1B.c。 我正在嘗試使用execl()從Project1B內部執行Project1A,但是到目前為止,它無法正常工作。
Project1B.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
pid_t pid;
switch((pid = fork()))
{
case -1:
printf("I'm sorry, fork failed\n");
break;
case 0:
execl("Project1A.c", "./prog", NULL);
printf("EXECL Unsucessfull");
break;
default:
printf("This is some parent code\n");
break;
}
printf("End of Program\n");
return 0;
}
execl執行一個二進制文件,這意味着您無法將其傳遞給Project1A.c並期望它能正常工作。 您需要對其進行編譯並執行編譯程序。
該函數的后續參數是命令行參數,以NULL終止。 這意味着您的execl調用對應於外殼程序上的./Project1A.c ./prog,這顯然不起作用。
相反,您的execl調用應為: execl("prog1A", NULL);
。
另一方面,您可以運行C代碼,方法是先使用系統函數運行compile命令,然后如果編譯成功,則使用execl運行已編譯的程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.