3

我正在尝试使用我的程序 notify.c 执行位于另一个目录中的名为“helloworld”的二进制文件(从 source.c 编译)。这是我的文件所在的位置:

/home/morts/桌面/helloworld

/home/morts/桌面/家庭作业/通知

我试过:

const char *cmd = "/home/morts/Desktop/helloworld";
execl(cmd, "LOL", NULL);
perror("execl()");
exit(EXIT_FAILURE);

但我得到:

execl(): Permission denied

如果 helloworld 位于 notify 的同一目录中,我只需输入“./helloworld”,但由于它们位于不同的目录中,我该如何解决这个问题?

谢谢并恭祝安康。

4

2 回答 2

0

如果你想通过 execl 执行路径 /bin/test 下的文件 hello 而不使用任何参数,请尝试以下操作:

execl("/bin/test/hello", "hello", (char*)NULL);

检查以下内容,否则您可能会收到权限拒绝错误:

  1. 第一个参数必须是/path/your_file不带空格的
  2. 第二个参数必须是“ your_file ”,与第一个参数相同
  3. 最后一个参数必须是 (char*)NULL
于 2013-12-11T02:41:25.330 回答
0

您应该通过尝试直接在终端中运行命令来检查路径是否正确并且您具有执行此文件的正确权限:

/home/morts/Desktop/helloworld

如果它有效,那么您必须检查运行您的程序的用户是否也有权执行该文件。

于 2013-04-16T13:07:48.180 回答