Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 试图使用posix_spawn()创建其他进程,但得到一个;权限被拒绝错误“;_C_Linux_Debian - Fatal编程技术网

C 试图使用posix_spawn()创建其他进程,但得到一个;权限被拒绝错误“;

C 试图使用posix_spawn()创建其他进程,但得到一个;权限被拒绝错误“;,c,linux,debian,C,Linux,Debian,我正在尝试使用posix_spawn()创建另一个可执行文件的进程。问题是我一直收到一个错误,说“spawn()失败:权限被拒绝”。我不知道怎么解决这个问题。如果这有帮助的话,我正在使用Debian buster 10。我需要更改其他文件的权限吗?如果是这样的话,我该怎么做 #include <stdio.h> #include <stdlib.h> #include <spawn.h> #include <unistd.h> #include &

我正在尝试使用posix_spawn()创建另一个可执行文件的进程。问题是我一直收到一个错误,说“spawn()失败:权限被拒绝”。我不知道怎么解决这个问题。如果这有帮助的话,我正在使用Debian buster 10。我需要更改其他文件的权限吗?如果是这样的话,我该怎么做

#include <stdio.h>
#include <stdlib.h>
#include <spawn.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>

extern char **environ

int main(void){

     char *args1[] = {"/home/filepath",NULL};
     int stat;
     pid_t pid;

     //this is where the code doesn't work
     if((stat1 = posix_spawn(&pid,"/home/filepath",NULL,NULL,args1,environ)) != 0){
          perror("spawn() failed");
     }else{
          printf("Proccess spawned, pid = %d\n",pid);
     }


return EXIT_SUCCESS;


#包括
#包括
#包括
#包括
#包括
#包括
外部字符**环境
内部主(空){
char*args1[]={/home/filepath”,NULL};
int stat;
pid_t pid;
//这就是代码不起作用的地方
if((stat1=posix_spawn(&pid,“/home/filepath”,NULL,NULL,args1,environ))!=0){
perror(“spawn()失败”);
}否则{
printf(“生成的进程,pid=%d\n”,pid);
}
返回退出成功;

文件是什么?它是否具有exec权限?它是二进制文件还是脚本文件?能否直接在命令行上运行
/home/filepath
?它是一个二进制文件,当我尝试在命令行上运行它时,它还表示权限被拒绝。旁注:从手册页:这些函数由POSIX指定以提供在缺乏支持
fork(2)
系统调用功能的机器上创建新进程的标准化方法。这些函数不是用来取代
fork(2)
execve(2)
系统调用。既然您使用的linux确实有
fork
,为什么要这么麻烦呢?因此,请小心使用…您需要向目标文件添加exec权限。(例如:
chmod+x/home/filepath
。然后执行:
ls-l/home/filepath
。您应该看到(例如)
-rwxr-x…