Sma*_*ery 4 c unix multithreading nonblocking
我正在开发一个程序,它将从控制台接收用户输入并在单独的线程中打印出来。我想避免用户在输入内容的过程中出现 printf 出现并在光标处打印自身的情况。
有没有办法从控制台窗口执行 c 中的非阻塞 io?理想情况下,捕获按键或类似的操作,以便用户键入的内容不会出现在屏幕上。我正在 Ubuntu 中进行开发,最好不必使用 ncurses 之类的东西。
使用termios您可以禁用终端回显:
#include <termios.h>
struct termios oflags, nflags;
tcgetattr(fileno(stdin), &oflags);
nflags = oflags;
nflags.c_lflag &= ~ECHO;
nflags.c_lflag |= ECHONL;
if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) {
/* handle error */
}
Run Code Online (Sandbox Code Playgroud)
然后在退出(使用atexit)之前,您必须恢复终端:
if (tcsetattr(fileno(stdin), TCSANOW, &oflags) != 0) {
/* handle error */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4443 次 |
| 最近记录: |