Debug心得: signal處理後要還原
在做signal的handler的設定時
最好在用完想要的功能之後要還原回原本系統設定的signal預設值
BUG:
我在server的地方因為用fork來處理每一個新client
所以我在fork之前都做了signal(SIGCHLD,SIG_IGN);
但就因為這樣,所以我之後wait到的child pid都是-1(系統設定的,wait的man page有寫)
得到這種東西: strerror(errno)=No child processes
所以我就讀不出child process的exit stauts
SOLUTION:
在fork完之後,給個處理新client的process一開始就做
signal(SIGCHLD,SIG_DFL);
就可以了
好了,今天的筆記到此結束
希望有幫助未來遺忘這些的自己,以及需要的人
最好在用完想要的功能之後要還原回原本系統設定的signal預設值
BUG:
我在server的地方因為用fork來處理每一個新client
所以我在fork之前都做了signal(SIGCHLD,SIG_IGN);
但就因為這樣,所以我之後wait到的child pid都是-1(系統設定的,wait的man page有寫)
得到這種東西: strerror(errno)=No child processes
所以我就讀不出child process的exit stauts
SOLUTION:
在fork完之後,給個處理新client的process一開始就做
signal(SIGCHLD,SIG_DFL);
就可以了
好了,今天的筆記到此結束
希望有幫助未來遺忘這些的自己,以及需要的人
留言
張貼留言