求助 csapp書中關於訊號處理的乙個問題

2021-04-24 13:33:19 字數 871 閱讀 4372

**如下:

void handler1(int sig)

pid_t pid;

if( (pid = waitpid(-1, null, 0)) < 0 )

unix_error("waitpid error");

printf("handler reaped child %d/n", (int)pid);

sleep(2);

return;

int main()

int i, n;

char buf[maxbuf];

if( signal(sigchld, handler1) == sig_err)

unix_error("signal error");

for(i=0; i<3; i++)

}if( (n = read(stdin_fileno, buf, sizeof(buf))) < 0 )

unix_error("read");

printf("parent processing input /n");

while(1)

;exit(0);

問題是我執行的時候,偶爾會出現只**了乙個子程序的情況,這個機率有的時候還很大。

而且,我的執行結果是:**二個子程序時,被**的是前兩個,而不是書上的1,3個,by the way,我也不明白書上為什麼是1,3個。還有8.29下面的執行結果中**順序是213。。。哪位大俠解釋下,謝謝。

根據我的理解,只**乙個說明第乙個sigchld出現時,系統正在處理乙個此類訊號,或者第乙個還沒處理的時候,第二個就到了(甚至同時,不知道雙核cpu會不會出現這種同時發出同一類訊號的情況,對系統不熟悉,請大俠不吝賜教啊),結果因為有乙個在pending,所以後面兩個直接丟棄了。

訊號處理技術 關於EMD的產生

通俗易懂,有助於理解emd和hht,就原封不動的搬過來了。關於emd的產生 自傅利葉變換與頻譜分析技術產生,人們得以從另外乙個角度觀察時域訊號,訊號裡各個點的密集程度,得以確定性地度量。之後,又產生了加窗傅利葉 小波變換 維格納分布等時頻分析技術。98年,黃大大又提出了一種新的時頻分析技術,即hht...

關於 訊號處理 的概念與本質(目標)

分兩大類 1 已知或未知訊號經過某個系統後再使用的情況,需要進行訊號處理。已知訊號的情況比如通訊系統,需要進行訊號的還原 未知訊號的情況比如測量 分析儀器 示波器 光譜分析儀 處理的結果是要忠實還原訊號本來的整體面目,不能為突出某些資訊而掩蓋另外一些資訊。需要處理的本質原因是訊號經過系統之後被引入了...

關於訊號線包地的處理經驗

低頻模擬訊號之間的隔離,保護地線的確很有用 小於30mhz情況 拉開走線間距是最有效的的減小串擾的方法 保護地線如果使用不當,可能反而會惡化串擾 在使用保護地線時需要根據實際情況仔細分析,保護地線要想起到應有的隔離作用,需要再地線上新增很多gnd過孔,過孔間距應小於1 10 對於表層走線來說,使用密...