当前位置: 技术问答>linux和unix
为什么无法更改stdin和stdout 的缓冲区?
来源: 互联网 发布时间:2017-05-03
本文导语: #include #include #include int main() { char a; setvbuf( stdout, (char*)NULL, _IONBF, 0); setvbuf( stdin, (char*)NULL, _IONBF, 0 ); while( a = getchar() ) putchar( a ); return 0; } 为什么这段代码里,不是明明把stdin和stdout 改为无缓冲了吗...
#include
#include
#include
int main()
{
char a;
setvbuf( stdout, (char*)NULL, _IONBF, 0);
setvbuf( stdin, (char*)NULL, _IONBF, 0 );
while( a = getchar() )
putchar( a );
return 0;
}
为什么这段代码里,不是明明把stdin和stdout 改为无缓冲了吗?终端运行还是行缓冲,即敲回车才会输出
#include
#include
int main()
{
char a;
setvbuf( stdout, (char*)NULL, _IONBF, 0);
setvbuf( stdin, (char*)NULL, _IONBF, 0 );
while( a = getchar() )
putchar( a );
return 0;
}
为什么这段代码里,不是明明把stdin和stdout 改为无缓冲了吗?终端运行还是行缓冲,即敲回车才会输出
|
终端缓冲是硬件驱动缓冲,跟stdio缓冲没关系。你要是不想敲回车,需要设置 non-canonical 模式,看 man tcsetattr