gpt4 book ai didi

C Linux - 如何从另一个程序执行程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:36 25 4
gpt4 key购买 nike

<分区>

我正在尝试执行我从另一个程序编写的程序(我们称之为程序 2)。

我编译 program2 并有可执行文件调用 client

我想运行 program2,为此我创建了进程 fork 以尝试使用 exec 函数执行 program2。

程序需要运行两个参数。

我使用:

execvp("client",arguments)

其中 arguments 是一个以 NULL 结尾的 char* 数组,而 arguments[0]“客户端”。程序在 exec 操作中失败,错误为 No Such File Or Directory

换句话说,如何使用 exec 函数从另一个程序运行我的代码?

代码:

int main(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);

}

}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com