在Linux中,可以使用以下方法處理SIGPIPE信號:
#include <signal.h>
int main() {
signal(SIGPIPE, SIG_IGN);
// 在接收到SIGPIPE信號時,不會中斷程序執(zhí)行,而是繼續(xù)執(zhí)行后續(xù)操作
// ...
}
#include <stdio.h>
#include <signal.h>
void sigpipe_handler(int signo) {
printf("Received SIGPIPE signal.\n");
// 其它處理操作
// ...
}
int main() {
signal(SIGPIPE, sigpipe_handler);
// 在接收到SIGPIPE信號時,會調(diào)用sigpipe_handler()函數(shù)進(jìn)行處理
// ...
}
注意:如果不對SIGPIPE信號進(jìn)行處理,默認(rèn)情況下,當(dāng)向已關(guān)閉的管道或Socket進(jìn)行寫操作時,內(nèi)核會向進(jìn)程發(fā)送SIGPIPE信號,導(dǎo)致程序終止。在處理SIGPIPE信號時,可以選擇忽略該信號(不推薦,可能會導(dǎo)致程序無法正常結(jié)束)或者使用自定義的信號處理函數(shù)進(jìn)行處理。