a) 產生:按鍵,硬體異常,kill函式傳送訊號
b) 常見訊號:
1. sighup:結束訊號
2. sigint:中斷訊號ctrl+c
3. sigkill:結束接收訊號的程序
4. sigterm:kill命令發出的訊號
5. sigchld:標誌子程序停止或結束的訊號
6. sigstop:停止訊號
c) 訊號處理:
1. 忽略此訊號:除了sigkill, sigstop
2. 執行使用者希望的動作:
3. 執行系統預設的動作:
d) 傳送訊號:
1. kill:可以給自己發,也可以給別人發訊號
a) int kill(pid_t pid, int signo);
b) #include
#include
c) pid:
1. >0:將訊號發給id為pid的程序
1. ==0:發給同組的程序
2. <0:發給其他組id等於pid絕對值的程序
3. ==-1發給所有程序
d) 注意:在程式中使用以上函式,在程式外可以使用kill指令傳送訊號
1. 例:kill –s sigint pid
2. 檢視程序號:ps aux
2. raise:只能給自己發
a) int raise(int signo)
b) #include
c) #include
3. alarm:設定時間,到時產生sigalarm訊號,不捕捉,預設終止
a) unsigned int alarm(unsigned int seconds)
1. #include
4. pause:程序掛起直到捕捉到乙個訊號,類似於wait(子程序退出)
a) int pause(void)
1. #include
e) 訊號處理函式:
1. sighandler_t signal(int signo, void(*func)(int))
a) func可能值:
1. sig_ign:忽略此訊號
2. sig_dfl:按系統預設方式處理
3. 訊號處理函式名:使用該函式處理,func的引數是整形
b) #include
c) 例:signal(sigint, my_func);
1. 為sigint訊號註冊訊號處理函式。
d) 注意:註冊函式後,並不是馬上執行該函式,而是等待訊號來時再執行該函式。因此需要關注訊號註冊函式的位置,在該位置以後才能捕捉該訊號。
Linux程序間通訊1 3
linux程序間通訊的目的 1.資料傳輸 乙個程序需要將它的資料傳送給另乙個程序 2.資源共享 多個程序之間共享同樣的資源 3.通知事件 乙個程序需要向另乙個或一組程序傳送訊息,通知它們發生了某種事件 4.程序控制 有些程序希望完全控制另乙個程序的執行 如debug 程序 此時控制程序希望能夠攔截另...
Linux學習筆記(程序間通訊)
ipc 程序間通訊 linux下的多個程序間的通訊機制叫做ipc,它是多個程序之間進行相互溝通的一種方法。通過程序間通訊可以實現不同程序之間傳播和交換資訊。程序間通訊的目的 1.資料傳輸 2.資源共享 3.乙個程序需要向另乙個或一組程序傳送訊息,通知它或它們發生了某種事件 4.程序控制 程序間通訊的...
13 程序間通訊
一 什麼是共享記憶體 顧名思義,共享記憶體就是允許兩個不相關的程序訪問同乙個邏輯記憶體。共享記憶體是在兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間共享的記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位...