请在下面找到代码部分.我想在循环中连续打印变量的当前值.一旦我按下转义键,就必须终止循环.这里的问题是执行在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命中一个转义键终止?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)