C語言之忽略SIGPIPE訊號

2021-07-03 04:35:32 字數 564 閱讀 3221

#include #include void setupsignal() 

}int main(int argc, char *argv)

return 0;

}

測試方法:

1.執行signal程式

通過另外的乙個linux終端檢視程式使用的pid

ps -ef|grep signal

root      4234  3124 93 13:02 pts/3    00:00:06 ./signal

傳送訊號

kill -sigpipe 4234

可以看到signal程式不會退出

2.將main函式中setupsignal();行注釋掉編譯

執行signal程式

通過另外的乙個linux終端檢視程式使用的pid

ps -ef|grep signal

root      4253  3124 99 13:03 pts/3    00:00:02 ./signal

kill -sigpipe 4253

可以看到signal程式退出了

忽略SIGPIPE訊號的方法

行到水窮處,坐看雲起時 在tcp程式設計時,如果向乙個已經收到rst的套接字寫資料,系統會給程序傳送sigpipe訊號,如果不處理該訊號的話,程序的預設動作是退出,可以用如下方法不讓系統傳送此訊號 令send 函式的最後乙個引數為msg nosignal。函式原型 ssize t send int ...

gdb中忽略訊號處理 SIGPIPE

gdb除錯網路程式時,會遇到sigpipe資訊,預設gdb會把程式停下來,即使程式使用signal sigpipe,sig ign 來忽略訊號。用handle命令設定一下預設的signal的處理行為即可 在gdb模式下執行下面的命令 handle sigpipe nostop print 如果連資訊...

C語言 C語言之continue

c語言迴圈 c 語言中的continue語句有點像break語句。但它不是跳出該迴圈語句,continue是跳過本次迴圈直接開始下一次迴圈的。在for迴圈裡,continue會跳過本次迴圈,但是自增語句仍然會執行,而在while和do while語句裡嘖是跳過迴圈重新執行判斷語句 課堂作業內容為 輸...