在fork()之后,为什么存储从另一个函数返回的malloc char**的局部变量不显示任何内容?
我写了一个小程序来学习在fork()之后,为什么存储从另一个函数返回的malloc char**的局部变量不显示任何内容?,c,linux,unix,C,Linux,Unix,我写了一个小程序来学习fork(),问题就在这里 int main() { char **str = NULL; int pid; str = get_command(); printf("befork fork(), str[0] = %s, str[1] = %s\n", str[0], str[1]); if((pid = fork()) == 0) { printf("str[0] = %s, str[1] = %s\
fork()
,问题就在这里
int main()
{
char **str = NULL;
int pid;
str = get_command();
printf("befork fork(), str[0] = %s, str[1] = %s\n", str[0], str[1]);
if((pid = fork()) == 0)
{
printf("str[0] = %s, str[1] = %s\n", str[0], str[1]);
}
else
{
printf("str[0] = %s, str[1] = %s\n", str[0], str[1]);
}
}
char **get_command()
{
char *cmd[2];
cmd[0] = malloc(6);
memcpy(cmd[0], "hello\0", 6);
cmd[1] = malloc(6);
memcpy(cmd[1], "world\0", 6);
return cmd;
}
在get_command()。为什么?
在get_command()函数中,我定义了一个char*cmd[2]
您还应该为阵列分配一些存储空间
char **cmd;
cmd = malloc(2 * sizeof(char*));
否则就不行了
如果您只是将其定义为char*cmd[2]代码>在函数体中,则它是一个局部变量,函数返回后其内容将不被定义。显示get\u命令的实现。
。显示代码而不是描述它。调试101:检查您的假设(即str
在get\u命令()之后和fork()之前的内容)
)。返回cmd代码>函数返回局部变量的地址。(cmd是一个数组,但由于数组不能作为一个整体返回,它会退化为指针;指针也与函数的返回类型相对应)