fork()
'u öğrenmek için küçük bir program yazdım, sorun şu., neden başka bir işlevden dönen bir malloc char ** saklanan yerel değişken hiçbir şey sunmuyor?
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()
işlevi, tanımlamam bir char *cmd[2]
ve cmd.Before çatalın iki element() için malloc
iki ipler, str str
ana basılmıştır fork(),
sonra expected.But olarak basılabilir ve Çocuk süreci hem NULL. Niye ya? get_command() işlevi
"get_command" uygulamasının uygulamasını göster. –
Açıklamak yerine kodunuzu gösterin. –
Debuggung 101: Varsayımlarınızı kontrol edin (diğer bir deyişle, '' str' * 'nin ardından '' get_command() 've *' 'fork()' 'dan). – DevSolar