我有一个套接字编程问题。我正在运行服务器,然后它等待客户端。但是,一旦我运行客户端,什么也没发生,它只是终止并带回提示。基本上它可以编译正常,但它根本不运行。一旦我运行它,它就会终止。仅当我在客户端代码中使用线程时,才会发生这种情况。
这是我正在使用的代码:
if(pthread_create(&threadID[i++], NULL, (void *)dostuff, (void *)(intptr_t)sock) != 0)
{
perror("Thread create error");
}
另一方面,如果我简单地输入
dostuff(sock);
客户端程序执行。我需要线程,因为我需要实现 I/O 多路复用。你能告诉我如何在我使用线程时阻止客户端终止吗?
您需要等待线程完成才能退出程序,例如使用 pthread_join
// do this before returning from main
pthread_join(threadID[i], NULL);