我正在創建一個相對簡單的多進程程序,以瞭解使用C的Linux中的信號和信號處理。我有幾個進程處理髮送到所有進程的信號(我使用sigaction來分配處理程序)過程組和一個跟蹤過程,該過程在檢測到一定數量的信號之後顯示一些信息。信號處理輸出顯示問題
我的問題是這樣的。如何可靠地顯示跟蹤過程中的控制檯輸出?此過程需要顯示檢測到的當前信號數量,並且我知道printf()不適合從信號處理程序調用。我知道我可以使用write(),但是我不確定我可以將變量值放到這裏來顯示,我認爲這個系統調用可以被信號中斷。
你能給我一個簡單的例子,有3個過程(一個產生信號(父),1個處理信號(孩子1)和一個關於信號的報告信息(孩子2)),或者解釋記者如何處理應該使用全局共享變量的值處理輸出?
感謝
感謝有關printf()的信息。 我知道你對一個流程的看法,知道他人在做什麼。我使用mmap()引入了全局共享變量,它引入了併發問題,我可以使用自旋鎖,sem,mutext等來處理這些問題......我只需要向所有進程發送信號,並讓它們記錄接收它,記者進程接收到相同的信號,並在計算了一些信號後顯示全局共享數據。 – OwlsCIS 2014-10-05 00:26:38