用exec()调用另一个程序

时间:2014-05-10 20:02:20

标签: memory exec fork shared

我想在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只编写程序的名称作为参数。

1 个答案:

答案 0 :(得分:0)

exec("p2","p2",shmid);

没有exec标准功能。我假设你的意思是execl,在这种情况下它应该是:

execl("/full/path/to/p2", "p2", shmid_to_string, NULL);

要将shmid转换为字符串,您可以使用snprintf