在实现more命令时所遇到的问题
未考虑重定向前,无阻塞的获取终端按键是如下代码所示实现的
fp_tty = fopen("/dev/tty", "rw");
//更改终端属性,使字符立即输入且不显示
tcgetattr(0, &oldt);
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr(0, TCSANOW, &newt);
int ch = fgetc(fp_tty);
重定向后发现fp_tty始终为NULL
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
代码如下:
原来你是想要实现类似more的功能啊。
这里是ubuntu的较新版本的more的源代码,只有一个文件,读起来会比较方便。