Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-execl():can';t执行位于另一个目录中的文件_C_Linux_Unix_Exec_File Permissions - Fatal编程技术网

C-execl():can';t执行位于另一个目录中的文件

C-execl():can';t执行位于另一个目录中的文件,c,linux,unix,exec,file-permissions,C,Linux,Unix,Exec,File Permissions,我正试图用我的程序notify.c执行另一个目录中名为“helloworld”(从source.c编译)的二进制文件。以下是我的文件的位置: /home/morts/Desktop/helloworld /主页/morts/桌面/家庭作业/通知 我试过: const char *cmd = "/home/morts/Desktop/helloworld"; execl(cmd, "LOL", NULL); perror("execl()"); exit(EXIT_FAILURE); 但我得到:

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


/home/morts/Desktop/helloworld

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

我试过:

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

execl(): Permission denied
如果helloworld将位于notify的同一目录中,我只需将“/helloworld”放在其中,但由于它们位于不同的目录中,我如何解决这个问题


感谢和问候。

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

/home/morts/Desktop/helloworld

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

如果要在path/bin/test by execl下执行文件hello,则不需要任何参数 请尝试以下操作:

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

选中以下选项,否则可能会出现权限拒绝错误:

  • 第一个参数必须是
    /path/your_文件
    ,不带任何空格
  • 第二个参数必须是“您的_文件””与第一个参数相同
  • 最后一个参数必须为(char*)NULL

  • 运行
    notify
    的用户是否有权执行
    helloworld
    ?我想是这样的:如果我键入“stat notify”,我会得到:Access:(0775/-rwxr-x)Uid:(1000/morts)Gid:(1000/morts)和“stat helloworld”:Access:(0775/-rwxrwxr-x)Uid:(1000/morts)你试过
    execl(cmd,“helloworld”,“LOL”,NULL);
    ?是@AnishRam,我总是得到“权限被拒绝”我怀疑这是问题所在,但是根据规范,
    (char*)NULL
    必须强制转换,
    (char*)NULL
    。/home/morts/Desktop/helloworld工作正常,并向我打招呼,world!