-1

注意:原发帖人已要求关闭问题;看评论。

在触发“按任意键继续”(基本上是 CIN.ignore())时 C 控制台程序退出后,其他 CMD 窗口停止响应控制台输入。

当程序从资源管理器窗口而不是 CMD 执行时,就会发生这种情况。当程序在 CMD 中启动时,它会很好地退出,并且其他控制台窗口不会受到影响。

尝试 cin.clear 和 getline 没有运气。

有任何想法吗?

   pthread_t sthread;
   void *ret;
   start=true;      
   if (pthread_create(&sthread, NULL, &sbsb, (void*)listeningSocket)){
     cout << "[ERROR] unable to create thread for Server"<< endl;
     if(closesocket(listeningSocket))
   printf("[ERROR] CLOSE SOCKET FAILED WITH ERROR:%d\n",WSAGetLastError());
     WSACleanup();
   return -1;
  }    
    cout<<"[SOCKET] Started listening on "<<port<<endl;
    cin.ignore();
    start=false;
    cout<<"[END] Exiting"<<endl;
    if(closesocket(listeningSocket))
    printf("[ERROR] CLOSE SOCKET FAILED WITH ERROR:%d\n",WSAGetLastError());
    pthread_join(sthread,&ret);

    while (running_threads > 0)usleep(1);
WSACleanup();
    cout<<"[END] Bye SB"<<endl;
    return 0;  
4

1 回答 1

0

刚刚通过关闭快速编辑模式解决了这个问题。详情见下文:

Windows 控制台应用程序卡住(需要按键)

我的代码与问题无关,只是为了解决问题。

于 2018-11-05T08:14:39.237 回答