Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不按ENTER键从标准输入读取_C++_C_Linux_Serial Port_Stdin - Fatal编程技术网

C++ 不按ENTER键从标准输入读取

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) ); } 有人有什么建议吗?您需要更改终端设

我需要在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) ); 

}

有人有什么建议吗?

您需要更改终端设置,以便立即发送每个字符。您可以通过操作termios(手册页有详细信息)来完成此操作


基本上,它只需要创建两个
termios
结构,使用
tcgetattr
的当前设置初始化一个,将结构复制到另一个结构,修改其中的缓冲区设置,然后使用
tcsetttr
的新结构设置终端(当然,在完成后将其设置回原位)。

您需要更改终端设置,以便立即发送每个字符。您可以通过操作
termios
(手册页有详细信息)来完成此操作


基本上,它只需要创建两个
termios
结构,使用
tcgetattr
的当前设置初始化一个,将结构复制到另一个结构,修改其中的缓冲区设置,然后使用
tcsetttr
的新结构设置终端(当然,当您完成时,请将其设置回原位)。

这是您正在尝试做的吗?refr to这是您正在尝试做的吗?refr to使用termios的示例使用termios的示例