这是我目前拥有的一段代码:
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
- 从父母那里写“我登录了”。
这有点奇怪,我想要的只是在父进程中读取某些内容,在管道中写入并将其发送到子进程,该子进程实际上应该使用该值执行某些操作。