C - execl():无法执行位于另一个目录中的文件

时间:2013-04-16 13:02:19

标签: c linux unix exec file-permissions

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

/家庭/ morts /桌面/ HelloWorld的

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

我尝试过:

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

但我明白了:

execl(): Permission denied

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

谢谢和问候。

2 个答案:

答案 0 :(得分:0)

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

/home/morts/Desktop/helloworld

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

答案 1 :(得分:0)

如果你想在没有任何参数的情况下通过execl在path / bin / test下执行文件hello 尝试以下:

  

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

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

  1. 第一个参数必须是/path/your_file,不能有任何空格
  2. 第二个参数必须是“ your_file ”,与第一个参数相同
  3. 最后一个参数必须是(char *)NULL