分类: C/C++
2008-03-11 10:15:53
在UNIX环境下,当遇到大数据量的输出时,一般会添加这样一个功能——按任意键继续……。这一功能的实现是不是像下面这段代码那么简单呢?
#include
main()
{
printf(“按任意键继续……\n”);
getchar();
printf(“按任意键继续……\n”);
getchar();
}
调试一下,你会发现,每次输入必须键入回车后才能生效,于是我们的 “按任意键继续……”就不如改成“按ENTER键继续……”更名副其实了。但是处于负责的态度,我们还是应该考虑如何实现“按任意键继续……”。这里涉及到对输入终端的设置问题,下面这段简单代码将会告诉我们具体实现步骤:
#include
#include
main(argc, argv)
int argc;
char **argv;
{
struct sgttyb sgo,sgn;
struct tchars tco,tcn;
/*获取当前模式和设置*/
ioctl(0, TIOCGETP, &sgo);
ioctl(0, TIOCGETC, &tco);
sgn = sgo;
sgn.sg_flags&=~ECHO;/*关闭ECHO*/
sgn.sg_flags |= CBREAK;/*打开CBREAK*/
tcn = tco;
tcn.t_intrc = -1;/*使中断键失效*/
/*保存新的模式和设置*/
ioctl(0, TIOCSETP, &sgn);
ioctl(0, TIOCSETC, &tcn);
/*添加“按任意键继续……”功能*/
printf(“按任意键继续……\n”);
getchar();
printf(“按任意键继续……\n”);
getchar();
/*重置旧的模式和设置*/
ioctl(0, TIOCSETP, &sgo);
ioctl(0, TIOCSETC, &tco);
exit(0);
}
好了现在我们的“按任意键继续……”可以放心运行了。
以上代码在UNIX AIX 4.3.0下调试通过。