C-execl():can';t执行位于另一个目录中的文件
我正试图用我的程序notify.c执行另一个目录中名为“helloworld”(从source.c编译)的二进制文件。以下是我的文件的位置: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); 但我得到:
/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_文件
,不带任何空格运行
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!