Memory 使用exec()调用另一个程序
我想使用另一个使用c中exec函数的程序。实际上,在fork之后,我想在child中创建随机数,并使用共享内存发送给parent。但每当我使用exec函数时,我都会出现这个错误,下面是我的代码:Memory 使用exec()调用另一个程序,memory,exec,fork,shared,Memory,Exec,Fork,Shared,我想使用另一个使用c中exec函数的程序。实际上,在fork之后,我想在child中创建随机数,并使用共享内存发送给parent。但每当我使用exec函数时,我都会出现这个错误,下面是我的代码: int shmid; shmid = shmget(key, 80,0700|IPC_CREAT); ptr = (int *) shmat (shmid, NULL , 0); i=fork(); if(i==0) { printf("1"); exec("p2","p2
int shmid;
shmid = shmget(key, 80,0700|IPC_CREAT);
ptr = (int *) shmat (shmid, NULL , 0);
i=fork();
if(i==0)
{
printf("1");
exec("p2","p2",shmid);
}
else if(i>0)
{
printf("anam");
}
else
{
exit(1);
}
p1.c:31:24:警告:从不同大小的整数转换为指针[-Wint到指针转换]
p1.c:31:3:警告:函数调用中缺少哨兵[-Wformat]
所以我的问题是,我如何使用exec-only编写程序名作为参数
没有exec
标准函数。我想你指的是execl
,在这种情况下应该是:
execl("/full/path/to/p2", "p2", shmid_to_string, NULL);
要将
shmid
转换为字符串,您可以使用snprintf
为什么不添加“C”标记,以便C程序员看到它?这里没有exec
之类的东西。要问一个问题,尤其是如此复杂的问题,最好创建一个“否则-例如-我们无法分辨“哪是第31行?”,“您包含了哪些标题?”我明白了。但我只需要使用程序名,而不需要使用程序名path@user3609616然后,也许可以尝试执行execlp
?
execl("/full/path/to/p2", "p2", shmid_to_string, NULL);