如何在循环中连续打印变量,并在Linux下用C命中一个转义键终止?
发布时间:2020-12-14 02:13:42 所属栏目:Linux 来源:网络整理
导读:参见英文答案 C non-blocking keyboard input????????????????????????????????????10个 请在下面找到代码部分.我想在循环中连续打印变量的当前值.一旦我按下转义键,就必须终止循环.这里的问题是执行在getchar函数处停止.但我希望它继续并打印变量的值,直到
参见英文答案 >
C non-blocking keyboard input????????????????????????????????????10个
请在下面找到代码部分.我想在循环中连续打印变量的当前值.一旦我按下转义键,就必须终止循环.这里的问题是执行在getchar函数处停止.但我希望它继续并打印变量的值,直到我点击退出按钮. do { vUpdateVariable(); // routine to update the current value of variable printf("Value is %fr",fVariable); ucKey = getchar(); usleep(1000); }while (ucKey != 0x1B); 解决方法
有很多方法可以做到这一点,包括提到
here,但我个人最喜欢的是使用叉子和信号.在每次循环迭代中,这比非阻塞操作更有效(不会浪费系统调用,因此不会浪费上下文切换).
你有效地分配一个工作进程来执行循环,安装一个信号处理程序,如USR1然后让你的父进程等待一个按键阻塞,一旦它收到所需的密钥,它就可以将USR1信号发送到另一个进程,这将导致信号处理程序清理并终止. 有关详细信息,请参阅这些: > http://linux.die.net/man/2/fork 我还要注意,这个解决方案适用于任何阻塞情况,您可以使用非阻塞IO进行修复,并且通常会节省一些CPU时间,尽管在创建fork时会花费一点内存和CPU. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |