如何使用sigaction使進程可以使用接收進程可以檢索的信號發送有效載荷?通過sigaction發送有效載荷
回答
您使用實時信號(SIGRTMIN+0
至SIGRTMAX-0
),以便信號排隊,並且您很少有機會丟失信號。 (標準信號不排隊,所以如果兩個信號在幾乎相同的時間發送,實際上是隻交付其中的一個。)
當安裝使用sigaction()
處理程序,您可以使用SA_SIGINFO
標誌,這樣的簽名該處理程序是
void signal_handler(int signum, siginfo_t *info, void *context)
當信號被使用sigqueue()
發送,第三個參數是一個指針或int,存儲在union sigval
類型的聯合。 (對於union sigval value
,int是value.sival_int
,且指針value.sival_ptr
在Linux中,你可以發送一個完整long
或unsigned long
使用value.sival_ptr = (void *)(unsigned long)yourval;
。)
(在Linux中,sizeof (long) == sizeof (void *)
,這樣你就可以實際發送的信息CHAR_BIT*sizeof (long)
位;這是在32位體系結構32和64在64位體系結構。)
,處理程序可確定是否信號被如果info->si_code == SI_QUEUE
檢查使用sigqueue()
發送。然後有效載荷 在info->si_value
聯合。請注意,您無法知道發件人是發送了一個指針還是一個int,您需要事先知道。 sigaction()
手冊頁描述了所有字段,包括si_code
。
不要混淆關於->si_int
,->si_ptr
和->si_value
。定義siginfo_t
結構使得成員si_int
和si_value.sival_int
指代完全相同的int
,並且si_ptr
和si_value.sival_ptr
指代完全相同的ptr
。爲了向後兼容,這些字段還有一些額外的「名稱」,就這些。
請記住,在高負載時,即使實時信號也會丟失。但是,我們經常使用像HUP
或TERM
這樣的信號來通知服務守護程序重新加載其配置或退出;所以,出於類似的管理目的,以及信息(而不是關鍵)消息,使用信號及其有效載荷是可以的。
信號不用於在進程之間傳遞過多的數據。考慮另一個IPC機制,如管道,插座等。
或者,您可以將它們結合使用。例如。在進程A之間共享管道的兩端,然後在進程A中寫入一些信息,然後發送信號給進程B.向進程B發送信號被視爲準備從管道讀取,然後進程B只是從一個管道讀取數據管道,由A寫入。
- 1. 通過WatchConnectivity發送數據時有效載荷有多大?
- 2. 要通過APNS在有效載荷中發送的數據
- 3. 如何通過PyFCM僅通過數據有效載荷發送FCM消息?
- 4. 向Axios發送「原始」有效載荷
- 5. 如何發送有效載荷到XBee
- 6. AuthHttp不發送郵件有效載荷
- 7. 在發送有效載荷數據時發送Web推送通知錯誤「MessageTooBig」
- 8. Android gcm通知有效載荷與數據有效載荷?
- 9. 使用node-gcm向Android設備發送有效載荷通知
- 10. 當twilio號碼收到mms時,twilio通過webhook發送什麼有效載荷?
- 11. 如何通過python autobahn/twisted發送有效載荷給特定用戶
- 12. 如何發送郵件請求與有效載荷中的數組通過urlfetchapp
- 13. 使用模塊請求通過有效載荷發送POST請求
- 14. 如何使用JAX-RS客戶端通過GET調用發送有效載荷?
- 15. 通知點擊處理推送通知有效載荷數據
- 16. 通過電線發送OData有效載荷的最有效方式是什麼? 「密集的JSON?」
- 17. Laravel:有效載荷無效
- 18. 什麼是「有效載荷」?例如,XML有效載荷
- 19. Ionic 3推送通知與有效載荷
- 20. 爲什麼推送通知中的有效載荷爲零?
- 21. 推送通知有效載荷與Android中的組
- 22. iOS7的iOS推送通知大有效載荷
- 23. ServiceWorker和推送通知的有效載荷
- 24. APN(Apple推送通知)的有效載荷大小限制
- 25. 如何在TCP UDP中發送有效載荷
- 26. 發送有效載荷在獲取請求中的嵌入
- 27. 使用python scrapy發送請求有效載荷
- 28. CakePHP testAction()不發送一個json有效載荷到控制器
- 29. 發送數據包有效載荷中的公鑰
- 30. 無法發送mdm有效載荷和命令到設備