我正在尝试创建一个简单的fork / exec程序,它将分叉子进程并执行名为program1的程序。 Program1是一个与该程序位于同一目录中的简单程序,它将输出一条消息" hello"。
Ptr是具有以下
的结构struct Ptr {
pid_t pid;
char * args[MAXARGS];
};
其中Ptr-> args [0]设置为程序名称" program1" 和Ptr-> args [1]设置为NULL
Ptr start (Ptr p)
{
switch (p->pid = fork())
{
case -1:
fprintf(stderr,"ERROR - %s; ", "fork error");
return NULL;
case 0: //we are inside the child process
p->pid = getpid();
execvp(p->args[0], p->args);
fprintf(stderr,"ERROR - %s; ", "execvp error");
perror(NULL);
exit(1);
return NULL;
}
return p;
}
但错误打印是" ERROR - execvp错误;没有这样的文件或目录"
我已经确定program1和这个程序都在同一个目录中,我无法理解为什么它不会执行。有什么东西我必须与环境变量。
我无法理解为什么这么简单的事情无法奏效。
谢谢,
杰克