|
这个程序的任务是从标准设备读入一个小写字母.然后父进程从标准输入设备输出这个小写字母.子进程则从标准输入设备读入这个小写字母.转化为大写字母再输出到标准输出设备.我的程序是:
#include<stdio.h>
#include<fcntl.h>
main()
{
char c;
int to_par[2],to_chi[2],get_id;
pipe(to_par);
pipe(to_chi);
get_id=fork();
c=getchar();
while(c!='x')
{
if(get_id==0)
{
close(0);
dup(to_chi[0]);
close(1);
dup(to_chi[1]);
close(to_chi[0]);
close(to_chi[1]);
close(to_par[1]);
close(to_par[0]);
if(c>='a'&&c<='z')
{
c-=32;
read(1,&c,1);
}
}
close(0);
dup(to_par[0]);
close(1);
dup(to_par[1]);
close(to_chi[1]);
close(to_chi[0]);
close(to_par[0]);
close(to_par[1]);
read(1,&c,1);
c=getchar();
}
}
现象是无法显示大写字母.而且不是一按x就退出.要按回车才行.甚至有时候按了几次x都不行.
[st1866@localhost st1866]$ a.out
sxxxxxxxxxxxxxx
[st1866@localhost st1866]$ a.out
sasx
xxxxx
是不是我的代码有问题? |
|