获得;execvp错误:地址错误“;使用恒定大小的2D数组时
运行以下代码时,我得到错误: execvp错误:地址错误 我不知道为什么会这样,但我怀疑获得;execvp错误:地址错误“;使用恒定大小的2D数组时,c,unix,C,Unix,运行以下代码时,我得到错误: execvp错误:地址错误 我不知道为什么会这样,但我怀疑cmd[2]应该设置为空指针。我不知道如何为大小不变的2d数组设置空指针 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main(void) { char cmd[10]
cmd[2]
应该设置为空指针。我不知道如何为大小不变的2d数组设置空指针
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void) {
char cmd[10][10];
strcpy(cmd[0], "ls");
strcpy(cmd[1], "-1");
int pid = fork();
// child process
if (pid == 0){
execvp(cmd[0], (char *const *) cmd);
perror("execvp error");
// parent process
} else if (pid > 0){
wait(NULL);
// fork failure
} else {
perror("Child creation unsuccessful");
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
内部主(空){
char cmd[10][10];
strcpy(cmd[0],“ls”);
strcpy(cmd[1],“-1”);
int-pid=fork();
//子进程
如果(pid==0){
execvp(cmd[0],(char*const*)cmd);
perror(“执行错误”);
//父进程
}否则,如果(pid>0){
等待(空);
//叉失效
}否则{
perror(“儿童创造失败”);
}
返回0;
}
execvp
接受一个指针数组。你给它一个2D数组。他们是完全不同的动物。对于初学者,给定给execvp
的指针数组必须NULL
终止。使用2D数组是不可能的。execvp
使用指针数组。你给它一个2D数组。他们是完全不同的动物。对于初学者,给定给execvp
的指针数组必须NULL
终止。使用2D阵列是不可能的。欢迎使用SO!请看:欢迎来到SO!见: