我正在使用Eclipse和Multi process GDB调试服务器。我使用了带有SSL和WS-Security的gSOAP 2.8。代码基本上是这样的:
int main (void)
{
ServerClass Server;
...
//Configuration of server, SSL and WS-Security
...
if( !Server.valid_socket(Server.bind() ) )
return EXIT_FAILURE;
while(1)
{
if( Server.valid_socket(Server.accept() ) )
{
pid_t pid = fork();
if(!pid) //Child process
{
...
Server.serve(); //serves the client
...
Server.destroy(); //ends gsoap connection
return EXIT_SUCCESS;
}
else
{
Server.close_socket();
}
}
else
cout << "Socket invalid" << endl;
}
...
}
ServerClass是一个包含服务器和成员配置方法的类。服务器成功处理客户端请求,返回EXIT_SUCCESS但退出时失败。调试器显示此跟踪:
Thread[2] 3540 (Suspended : Signal : SIGSEGV: Segmentation Fault)
- std::ostream::flush() at 0xb7b9c0
- std::ios_base::Init::~Init() at 0xb7b5d81c
- 0xb7918121
- exit() at 0xb791817d
- __libc_start_main() at 0xb78fea8b
- _start() at 0x8143110
可能是什么问题?感谢。
编辑:我替换了return EXIT_SUCCESS;
的
exit(EXIT_SUCCESS);
现在代码工作正常,但我不知道为什么失败了。有什么建议?