如何关闭ctrl + C上的管道?
答
你可以使用signal handling为:
#include <signal.h>
void sigHandler(int sig) {
// Respond to the signal here.
}
int main(..) {
signal(SIGINT, &sigHandler);
..
}
答
- 如果处理SIGINT,你可以只调用close()。或者你可以选择保持原样,并保持管道畅通。
- 如果你不处理信号,你的程序将消失,管道的一侧将自动被操作系统关闭。管道的另一端将获得EPIPE或零或-1的读数。
当您的进程死亡时,操作系统将关闭所有打开的文件句柄。你确切的问题是什么? – Mat
@Mat:强制关闭程序后,我的管道到'gnuplot -persist'似乎仍然存在。 – Andreas
'persist'选项就是这样 - 显示过程在主gnuplot进程死后仍然存在。将管道关闭到主进程会杀死它,但不会显示图形。 – Mat