簡體   English   中英

如何通過中斷ctrl + c關閉主線程之前的所有線程?

[英]How to close all the threads before main thread by interrupting ctrl+c?

我已經在C中使用_beginthread()創建了5個線程池。池中的所有線程將無限運行以完成從客戶端接收的工作。 例如,當客戶端將被連接時,池中的空閑線程將對此進行處理。 完成任務后,線程將等待下一個客戶端。 現在我的問題是,每當我從服務器輸入ctrl+c時,程序都會終止。 但是我想在終止主線程之前從池中關閉所有正在運行和正在等待的線程。

對於Windows

#include <windows.h> 
#include <stdio.h> 

BOOL WINAPI signal_handler(DWORD signal) {

    if (signal == CTRL_C_EVENT){
        printf("CTRL C caught here .\n");
    }
    return TRUE;
}

main()
{
    ....
    SetConsoleCtrlHandler(signal_handler, TRUE);

   .....

     printf("This should appear after signal_handler\n");
}

對於Linux

#include<stdio.h>
#include<signal.h>    

void signal_handler() 
{
    printf("CTRL C caught here .\n");
}

main() 
{

    ...
    // SIGINT is signal name create  when Ctrl+c will pressed 
    signal(SIGINT,signal_handler);  



    printf("This should appear after signal_handler\n");

}

捕獲ctrl-c之后,您可以關閉所有線程和其他清理內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM