有一个用 C 语言编写的工具,基于套接字编程和多线程。如果我只是简单地运行该工具,则不会出现错误,并且该工具可以完美地工作。
但是,如果我在调试模式下运行该工具,线程之间的切换会引发 SIGPIPE 信号,因此数据无法从该工具传输到其服务器。
使用 SIGNAL(SIGPIPE, SIG_IGN) 处理 SIGPIPE 会使线程工作吗?
据我了解,这是由于线程之间的进程间通信失败而引起的。如果是,那么如何调试这样的多线程应用程序?
请建议我处理此问题的方法。
有一个用 C 语言编写的工具,基于套接字编程和多线程。如果我只是简单地运行该工具,则不会出现错误,并且该工具可以完美地工作。
但是,如果我在调试模式下运行该工具,线程之间的切换会引发 SIGPIPE 信号,因此数据无法从该工具传输到其服务器。
使用 SIGNAL(SIGPIPE, SIG_IGN) 处理 SIGPIPE 会使线程工作吗?
据我了解,这是由于线程之间的进程间通信失败而引起的。如果是,那么如何调试这样的多线程应用程序?
请建议我处理此问题的方法。
通过仔细进入线程解决了这个问题。该工具不仅会创建进程,还会创建线程,因此不正确的 gdbinit 设置和步进会引发 SIGPIPE 信号。
这在此处的其他相关帖子中有所说明。