Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
获得;execvp错误:地址错误“;使用恒定大小的2D数组时_C_Unix - Fatal编程技术网

获得;execvp错误:地址错误“;使用恒定大小的2D数组时

获得;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]

运行以下代码时,我得到错误:

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][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!见: