的printf(* ARG);
execvp(* arg,arg);
这里printf()语句打印value = ls.But当运行程序execvp时,没有这样的文件或目录。
否则if(pid == 0){
printf(*arg);
execvp(*arg, arg);
char* error = strerror(errno);
printf("shell: %s: %s\n", arg[0], error);
return 0;
if(execvp(arg[0], arg)<0)
{
printf("***ERROR: execution failedn\n");
}
return 0;
}
答案 0 :(得分:0)
以下代码是两个如何使用execvp
的示例。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv) {
char *args[] = {"ls", "-l", NULL};
/* an example with a decleared array containing the commande */
if (fork() == 0) {
execvp(args[0], args);
}
/* another example where the commande was passed to main */
printf("argv[0] is the programme/executable name!\nargv[0] = %s\n", argv[0]);
if (fork() == 0) {
execvp(argv[1], argv + 1);
}
return EXIT_SUCCESS;
}
execv()
,execvp()
和execvpe()
函数提供了一个数组 指向以null结尾的字符串的指针,表示参数列表 可用于新计划。第一个参数,按惯例, 应指向与正在执行的文件关联的文件名。 指针数组必须以空指针终止。