无法在我的代码中捕获SIGHUP信号

时间:2017-10-16 06:56:31

标签: c++ linux

我在处理SIGHUP信号时遇到了一个奇怪的问题。

我需要以交互模式执行一些命令。 所以我用伪终端概念编写了一些代码。以下是我提到的链接。 “http://rachid.koucha.free.fr/tech_corner/pty_pdip.html”。

在链接中,他们使用fork概念来启动主终端。  任务完成后,使用close(fd)命令关闭主文件描述符和文件描述符。

但是,由于fork将显示重复的进程,并且在我们的项目中不允许这样做,所以我使用了thread而不是fork。 我能够正确关闭从属文件描述符,没有任何问题。 但是我无法关闭主人fd。

经过一些分析,我观察到在尝试关闭主fd时,它会发送SIGHUP信号。如果我使用fork概念,这是可以的,但不幸的是我使用了线程,所以我的进程终止了。

如果我不关闭它,就会发生fd泄漏。 所以我想忽略SIGHUP信号。但是当我编写程序来捕获信号时,我能够捕获除此之外的所有信号。 有人可以帮我这一部分吗?

捕捉SIGHUP与其他信号的不同之处是什么?

注意:我们正在使用amf框架来保持我们的服务。当我保持服务独立时,我能够捕获信号,当它处于amf时,我无法捕获信号。 任何快速帮助表示赞赏。现在我没有时间做任何设计更改。我只是想避免内存泄漏。

0 个答案:

没有答案