簡體   English   中英

UNIX上的進程間通信

[英]Interprocess communication on UNIX

為了允許進程間通信,我必須在SOLARIS 9 SPARC的C語言中實現某種機制。

簡而言之,我必須實現一個多線程程序,在該程序中,線程的父級一旦接收到信號,或者您想要的任何東西,都必須觸發一組負責加密文件的線程。

我無法使用某些TCP套接字解決方案與此程序進行通信。

我在考慮使用系統信號(並通過kill -s SIGNAL PID觸發過程)或通過域unix套接字觸發。

你怎么看? 您能建議我一些其他解決方案嗎?

其他解決方案:共享內存段,流水線,Unix套接字(嘿,它們不是TCP:)),...

你怎么看? 您能建議我一些其他解決方案嗎?

信號是一個很好的解決方案,並且比許多簡單。 我可能會自己使用。 其他大多數都涉及對主機環境的更多更改,這些更改將使進程不再有效,並且/或者使得同時運行系統的多個副本變得更加困難(因為您必須自己管理不同的文件名,端口號,共享內存ID等,而操作系統已經跟蹤PID,並允許它們作為殺死目標)。

不過,如果您要使用其他選項,則命名管道非常非常易於使用。 在您的外殼中,只需“ mkfifo xyz”即可在當前目錄中創建一個名為“ xyz”的管道。 然后,您可以讓您要發出信號的線程阻止讀取管道,然后在管道中echo "go boy go" > xyz ,您的控制線程將退出read()。

如果我理解您的問題,請看一下POSIX消息隊列 ,特別是mq_notify() 您可以通過消息隊列進行通信並將其設置為在接收到消息時自動生成線程。 該線程讀取文件名和任何內容的隊列,然后進行加密。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM