我想编写一个使用 exec 的程序来改变一个 child 并用它来做窗帘 Action 。
child 必须计算一个简单的等式 (-,+,*,/)。
当我尝试使用 execvp
访问文件时,出现以下错误:
execvp() failed!: Permission denied
有人知道我做错了什么吗? 下面是我的代码。
int main()
{
signal(SIGCHLD, SIG_IGN); //ignore child signal from now on
pid_t status;
char *a[2] = { "calculator", "2+1", NULL };
status = fork();
if (status != 0)
{
do_child(0, a);
}
return EXIT_SUCCESS;
}
/*
* id 0: calculator
* id 1: factorial
* id 2: pid
*/
void do_child(int id, const char *args[])
{
switch (id) {
case 0:
if (execvp("../ex2cFactorial/ex2cCalculator.c", args) != 0)
{
perror("execvp() failed!");
exit(EXIT_FAILURE);
}
break;
//other cases (haven't been written yet)
}
}
最佳答案
ex2cCalculator.c
可能是一个源文件,您需要的是可执行文件的名称(ex2cCalculator
、a.out
随便)
数组初始化器中也有多余的元素。它应该是 char *a[3] = { "calculator", "2+1", NULL };
关于c - execvp 在 c 中返回权限被拒绝的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40973906/