C++ 不按ENTER键从标准输入读取
我需要在Linux中阅读stdin,尽管我的程序只接收消息,没有新行 我尝试了此代码,但不起作用:C++ 不按ENTER键从标准输入读取,c++,c,linux,serial-port,stdin,C++,C,Linux,Serial Port,Stdin,我需要在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) ); } 有人有什么建议吗?您需要更改终端设
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) );
}
有人有什么建议吗?您需要更改终端设置,以便立即发送每个字符。您可以通过操作termios(手册页有详细信息)来完成此操作
基本上,它只需要创建两个
termios
结构,使用tcgetattr
的当前设置初始化一个,将结构复制到另一个结构,修改其中的缓冲区设置,然后使用tcsetttr
的新结构设置终端(当然,在完成后将其设置回原位)。您需要更改终端设置,以便立即发送每个字符。您可以通过操作termios
(手册页有详细信息)来完成此操作
基本上,它只需要创建两个
termios
结构,使用tcgetattr
的当前设置初始化一个,将结构复制到另一个结构,修改其中的缓冲区设置,然后使用tcsetttr
的新结构设置终端(当然,当您完成时,请将其设置回原位)。这是您正在尝试做的吗?refr to这是您正在尝试做的吗?refr to使用termios的示例使用termios的示例