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