我已經設置了多個阻塞讀取串口並通過使用setitimer()超時。當我讀完時(或超時過期,並且read()返回EINT),我寫了一條不同的消息,重新啓動警報並開始再次讀取。但是,現在我已經發現了一個問題 - 當兩次讀取之間的警報到期時,我該怎麼辦?我現在想停下來,但我只想去看下。 (塞汀一些標誌只想改變這個問題:「我應該怎麼做,如果報警和標誌之間到期讀?」)通過報警中斷多個讀取
-2
A
回答
0
有一種方法做,你說什麼,你想做的事,但它是非常醜陋。
- 創建一條管道。關閉它的寫入結束。這會給你一個死的無用的描述符(用於讀取結束)。
- 以串行端口和描述符
dup
它保存副本。 - 在你的中斷處理程序,
dup2
通過串口描述符的死描述。這將確保下一個read
或write
失敗並返回該函數。 - 爲了把事情恢復正常,
dup2
串口描述符的副本保存在一個你殺了。
+0
你還是不明白我的意思:/。我不想打斷一個閱讀。我想讓中斷讓我們說一個函數,它由多個讀取()(和寫入)組成。當在read()中間發出警報「buzzes」時,我可以在超時時跟蹤EINTR螞蟻返回錯誤,但是當我不讀取()時報警「蜂鳴」,我真的很想立即返回錯誤。 – Charlestone
+0
查看我的更新。這應該做到這一點。 –
相關問題
- 1. 如何通過取消舊警報和添加新警報來更新警報?
- 2. 當您有多個警報時取消單個警報
- 3. 警報「中斷」jQuery動畫
- 4. 通過單擊警報
- 5. 從xml中讀取javascript警報值
- 6. AlarmManager多個報警
- 7. 多個警報SQLite
- 8. 通過GPU讀取多個.dat文件
- 9. 通過VB6讀取多個XML文件
- 10. 取消Android報警/通知
- 11. 如何獲取多個警報通知的事件名稱?
- 12. 引導 - 防止警報從封閉通過JavaScript警報事件
- 13. 報警通知
- 14. 多個警報不響鈴
- 15. 通知警報服務無法在控制器獲取typeError:無法讀取未定義的屬性'警報'
- 16. 按鈕警報中的多個參數?
- 17. jQuery中的多個警報框?
- 18. Java ME中的多個連續警報
- 19. 如何通過jQuery阻止警報框
- 20. 試圖通過執行警報
- 21. iPhone多次警報通過網絡連接檢查調用
- 22. 通過多線程讀取文件
- 23. Azure交通警報
- 24. 定通知警報
- 25. 如何通過API調用獲取Datadog警報數據
- 26. RSS閱讀器警報
- 27. 如何通過一個InputStream讀取多個ZipEntries
- 28. 如何通過循環中的Softwareserial庫模仿讀取多個RFID閱讀器?
- 29. 閱讀多個HID報告
- 30. 哪一個是正確的?警報(+「123」))警報(+「123」)警報(+(「123」))
哪裏碼?我們需要看到[MCVE](http://www.stackoverflow.com/help/mcve)。參見[如何提問](http://www.stackoverflow.com/help/how-to-ask)。 – CodeMouse92
鬧鐘是什麼意思?這是否意味着什麼是錯的?如果是這樣,你不必處理失敗? –
「通過使用setitimer()進行超時」。有一個更好的方法來實現超時。使用['select'](http://linux.die.net/man/2/select)等待輸入可用。 'select'內置了超時支持。 – kaylum