我需要在Linux中读取stdin,虽然我的程序只会收到没有新行的消息。
我尝试了这段代码,但无法正常工作:
int main ( void )
{
char p_char[48];
memset( p_char, 0, sizeof(p_char) );
fcntl( STDIN_FILENO, F_SETFL, FNDELAY );
read( STDIN_FILENO, p_char, sizeof(p_char) );
}
有人有建议吗?
答案 0 :(得分:4)
您需要更改终端设置,以便立即发送每个字符。您可以通过操作termios
(手册页有详细信息)来完成。
基本上它只涉及创建两个termios
结构,用tcgetattr
初始化一个当前设置,将结构复制到另一个结构,修改其中的缓冲区设置,然后设置终端使用tcsetattr
的新结构(当然,在完成后将其设置回来)。