我想在c中使用另一个使用exec函数的程序。实际上在fork之后我想在子节点中创建随机数并使用共享内存发送给父节点。但每当我使用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",shmid);
}
else if(i>0)
{
printf("anam");
}
else
{
exit(1);
}
p1.c:31:24:警告:从不同大小的整数转换为指针[-Wint-to-pointer-cast] p1.c:31:3:警告:在函数调用[-Wformat]
中缺少sentinel所以我的问题是如何使用exec只编写程序的名称作为参数。
答案 0 :(得分:0)
exec("p2","p2",shmid);
没有exec
标准功能。我假设你的意思是execl
,在这种情况下它应该是:
execl("/full/path/to/p2", "p2", shmid_to_string, NULL);
要将shmid
转换为字符串,您可以使用snprintf
。