【发布时间】:2015-03-25 10:27:43
【问题描述】:
我在 Linux 平台上工作。 我有一个基于控制台的多线程应用程序,它为其他功能加载多线程共享对象库。 共享对象库在内部打开一个串行端口进行通信。 该库使用“打开”、“读取”和“写入”Linux 系统调用进行串行通信。串行通信使用信号处理程序来接收数据。 控制台应用程序中的主线程等待“scanf”语句,以获取用户的输入。
只要串行端口上有任何活动,就会生成信号,因此“scanf”调用会被 EINTR(中断的系统调用)中断。
有什么方法可以让'scanf'不会因为串口的读写操作而被中断?
【问题讨论】:
-
EINTR 是 errno 不是信号
-
您可以尝试
NONBLOCK获取输入。它不会帮助你避免这种情况。 -
是的,EINTR 是一个 errno。
-
下面是我的代码 sn-p
标签: c linux signals scanf eintr