如何在循环中连续打印变量,并在Linux下用C命中一个转义键终止?

如何在循环中连续打印变量,并在Linux下用C命中一个转义键终止?,第1张

概述参见英文答案 > C non-blocking keyboard input                                    10个 请在下面找到代码部分.我想在循环中连续打印变量的当前值.一旦我按下转义键,就必须终止循环.这里的问题是执行在getchar函数处停止.但我希望它继续并打印变量的值,直到我点击退出按钮. do{ vUpdateVariable(); 参见英文答案 > C non-blocking keyboard input                                    10个
请在下面找到代码部分.我想在循环中连续打印变量的当前值.一旦我按下转义键,就必须终止循环.这里的问题是执行在getchar函数处停止.但我希望它继续并打印变量的值,直到我点击退出按钮.

do{     vUpdateVariable();        // routine to update the current value of variable     printf("Value is %f\r",fVariable);      ucKey = getchar();     usleep(1000);}while (ucKey != 0x1B);
解决方法 有很多方法可以做到这一点,包括提到 here,但我个人最喜欢的是使用叉子和信号.在每次循环迭代中,这比非阻塞 *** 作更有效(不会浪费系统调用,因此不会浪费上下文切换).

你有效地分配一个工作进程来执行循环,安装一个信号处理程序,如USR1然后让你的父进程等待一个按键阻塞,一旦它收到所需的密钥,它就可以将USR1信号发送到另一个进程,这将导致信号处理程序清理并终止.

有关详细信息,请参阅这些:

> http://linux.die.net/man/2/fork
> http://man7.org/linux/man-pages/man7/signal.7.html

我还要注意,这个解决方案适用于任何阻塞情况,您可以使用非阻塞IO进行修复,并且通常会节省一些cpu时间,尽管在创建fork时会花费一点内存和cpu.

总结

以上是内存溢出为你收集整理的如何在循环中连续打印变量,并在Linux下用C命中一个转义键终止?全部内容,希望文章能够帮你解决如何在循环中连续打印变量,并在Linux下用C命中一个转义键终止?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1032479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存