下面是一段代码,我目前有:叉和管道工作不顺利,他们执行的同时
int main()
{
int pid, fd[2], i;
char comanda[1000], *var, vect[100][100], text[100];
if((pid = fork()) < 0)
{
perror("fork error");
exit(1);
}
if(pid){
printf("enter command: \n");
scanf("%[^\t\n]", comanda);
close(fd[0]);
close(0);
var = strtok(comanda, " ");
i=0;
while(var != NULL)
{
strcpy(vect[i], var);
var = strtok(NULL, " ");
i++;
}
if(strcmp(vect[0], "login") == 0)
{
write(fd[1], "login", 5);
printf("I got login");
}
close(fd[1]);
wait(NULL);
}
else
{
close(fd[0]);
int i=0;
read(fd[0], &text, sizeof(text));
printf("This is the child ");
exit(0);
}
return 0;
}
而预期输出为:
- 输入命令:
- 我输入命令这里 -
- 他在管写道
- 他写道:“我被登录”
- 他又在孩子和处理我的文字
输出我得到的是一种奇怪:
- “中输入命令:”从父......然后
- “这是孩子“从孩子?!?!?!来自哪里?!?!
- 询问输入,scanf
- 从父级写入“我已登录”。
这是一种奇怪的,我要的是读父的东西,在管道写,并将其发送给子进程应该真正做到与价值的东西。
我相信你忘了创建一个管道。 – Art
刚刚关闭文件描述符时,您认为在子进程“读”中会发生什么? –
我的愚蠢程度:99999.让我们来看看它是否有效 – FinalDestiny