Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
信號
|
387
信號 payload 範例
下面所舉的例子會傳送
SIGUSR2
信號給 pid 1722 的行程,此信號具有一個整數的
payload,所要傳送的是
404
這個值:
sigval value;
int ret;
value.sival_int = 404;
ret = sigqueue (1722, SIGUSR2, value);
if (ret)
perror ("sigqueue");
如果行程 1722
SIGUSR2
的處理使用了一個
SA_SIGINFO
處理程序,則它將發現
signo
設定為
SIGUSR2
si->si_int
被設定為
404
以及
si->si_code
被設定為
SI_QUEUE
信號機制是 Unix 中的一項失誤
許多 Unix 程式設計者並不看好「信號」。就核心與用戶之間的通訊而言,它是一個老舊
過時的機制,充其量只是 IPC 的原始形式。在多執行緒程式與事件迴圈的世界中,通常
不適合使用信號機制。我不打算修改信號機制,不過一個更善於表現、易於擴充、具執
行緒安全性、以檔案描述器為基礎的解決方案,似乎是一個正確的開始。
然而,無論好壞,我們仍需要它們。信號是從核心接收許多通知(例如,非法運算碼
執行〔illegal opcode execution〕的通知)的唯一方法。此外,信號是 Unix(因而也
Linux)終止行程以及管理父∕子行程關係的方法。因此,我們不得不瞭解及使用
信號。
信號不被看好的主要原因在於,很難讓所撰寫出的信號處理程序能夠適當地避開再進入
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812