go語言獲取傳送訊號的程序pid

2021-07-22 20:23:38 字數 556 閱讀 8191

今天在發布乙個程式之前,給qa提測的時候,qa反饋程式執行10幾分鐘之後,退出了

在程式中加日誌,發現程式捕獲到了乙個sigterm訊號,然後做了一些退出前的清理工作(在退出之前,該傳送的資料還是需要傳送的)。然後就需要知道到底是那個程序向我傳送sigterm訊號

查了一下,貌似go語言沒有直接的傳送獲取向自己傳送訊號的程序的pid,需要嵌入一段c語言**,獲取到pid之後,為了更直觀的知道是那個可執行程式,可以去讀取/proc/$/exe這個軟鏈

package main

/*#include

#include

#include

#include

struct sigaction old_action;

void handler(int signum, siginfo_t *info, void *context) else

}void test()

*/import "c"

......

......

func main()

pthread kill向子程序傳送訊號函式

pthread kill 別被名字嚇到,pthread kill可不是kill,而是向執行緒傳送signal。還記得signal嗎,大部分signal的預設動作是終止程序的執行,所以,我們才要用signal 去抓訊號並加上處理函式。int pthread kill pthread t thread,...

程序間通訊之kill傳送訊號

c語言 利用kill函式實現乙個程序向另乙個程序傳送訊號 1.用於向任何程序組或程序傳送訊號 include signal.h intkill pid t pid,intsig 2.引數 pid 可能選擇有以下四種 1.pid大於零時,pid是訊號欲送往的程序的標識。2.pid等於零時,訊號將送往所...

Linux下父程序向子程序傳送訊號

需要用到的函式 kill int kill pid,sig int pid,sig 其中,pid是乙個或一組程序的識別符號,引數sig是要傳送的軟中斷訊號。1 pid 0時,核心將訊號傳送給程序pid。2 pid 0時,核心將訊號傳送給與傳送程序同組的所有程序。3 pid 1時,核心將訊號傳送給所有...