我想執行從另一個程序寫的程序(我們稱之爲程序2)。C Linux的 - 如何從另一個程序執行程序
我編譯program2,並有可執行文件調用client
。
我想運行程序2,併爲此創建了用於嘗試使用exec
函數執行程序2的過程fork
。
程序需要運行兩個參數。
我用:
execvp("client",arguments)
凡arguments
是NULL
封端的char*
- 陣列,並且arguments[0]
是"client"
。程序在exec
操作中失敗,錯誤No Such File Or Directory
。
換句話說,如何使用exec
函數從另一個程序運行我的代碼?
代碼:
INT主(INT ARGC,CHAR *的argv []){
struct Integrals* shm_ptr;
key_t key;
int i,status;
int shm_id;
pid_t pid;
int child_pid[PROCESS];
char curPid[10];
int curpid;
double calcSegment[SIZE];
int from,to;
double segment;
curpid=getpid();
sprintf(curPid,"%d",curpid);
char* arguments[]={"client",argv[1],curPid,NULL};
signal(SIGUSR1, sig_handler);//"install" the 'sig_handler' func in case ^C signl.
printf("---------->%s",arguments[0]);
key=ftok("\tmp",(char)argv[1][0]);
if((shm_id=shmget(key,sizeof(Integrals),IPC_CREAT|0600))==-1)
{
perror("Fail To Allocate Shared Memory");
exit(1);
}
if((shm_ptr=(Integrals*)shmat(shm_id,NULL,0))<0)
{
perror("Fail To Attach Memory");
exit(1);
}
pid=fork();
if(pid<0)
{
perror("The Fork Failed");
exit(1);
}
else if(pid==0)
{
if(execvp("workspace/hafala/EX2/client",arguments)==-1)
{
perror("Faile To Execute 'client.c' Program");
exit(1);
}
}
在此處發佈您的代碼。 –
爲什麼程序失敗?檢查errno。 – Joni
程序在「沒有這樣的文件或目錄」中失敗 – user2501289