[linux操作系统实验]信号机制(按ctrl c给父进程发信号后,子进程没有反应?)

/ 2,312评论 / 9317阅读 / 1点赞

问题

按ctrl c给父进程传信号后,父进程会发送信号给子进程,为什么子进程没有反应?

而只有修改父进程给子进程发送的信号为SIGINT时才会有反应?


实验具体内容

实验内容

概念

信号的基本概念

信号的发送

对信号的处理

涉及函数

kill( )

signal( )

名  字说          明
01SIGHUP挂起(hangup)
02SIGINT中断,当用户从键盘按^c键或^break键时
03SIGQUIT退出,当用户从键盘按quit键时
04SIGILL非法指令
05SIGTRAP跟踪陷阱(trace trap),启动进程,跟踪代码的执行
06SIGIOTIOT指令
07SIGEMTEMT指令
08SIGFPE浮点运算溢出
09SIGKILL杀死、终止进程 
10SIGBUS总线错误
11SIGSEGV段违例(segmentation  violation),进程试图去访问其虚地址空间以外的位置
12SIGSYS系统调用中参数错,如系统调用号非法
13SIGPIPE向某个非读管道中写入数据
14SIGALRM闹钟。当某进程希望在某时间后接收信号时发此信号
15SIGTERM软件终止(software  termination)
16SIGUSR1用户自定义信号1
17SIGUSR2用户自定义信号2
18SIGCLD某个子进程死
19SIGPWR电源故障

源代码

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <iostream>
#include <sys/wait.h>
#include <sys/types.h>
using namespace std;

/*记录子进程pid,
 * whois:
 *      0:父进程
 *      1:子进程1
 *      2:子进程2*/
int pid1 = 0, pid2 = 0, whois = 0;

/*信号*/
#define COOLSIG SIGINT

/*响应信号*/
void do_exit(int)
{
        switch (whois)
        {
        case 0:
        {
                kill(pid1, COOLSIG);
                kill(pid2, COOLSIG);
                cout << "<< wait1: " << wait(0) << endl;
                cout << "<< wait2: " << wait(0) << endl;
                cout << "<< 父进程退出" << endl;
        }break;
        case 1:;
        case 2:
        {
                cout << "<< 子进程" << whois << "结束!" << endl;
        }break;
        }
        exit(0);
}

int main()
{
        cout << "<< COOLSIG = " << COOLSIG << endl;
        pid1 = fork();
        if (pid1 == -1){
                cout << "<< fork error" << endl;
        }
        else if (pid1 == 0)
        {
                 whois = 1;      //子进程1
                 signal(COOLSIG, do_exit);
        }
        else
        {
                cout << "pid1 = " << pid1 << endl;
                pid2 = fork();  //父进程
             	if (pid2 == -1)
                {
                        cout << "<< fork error" << endl;
                }
                else if (pid2 == 0)
                {
                        whois = 2;      //子进程2
                        signal(COOLSIG,do_exit);
                }
                else
                {
                        cout << "pid2 = " << pid2 << endl;
                        whois = 0;      //父进程
                        signal(SIGINT, do_exit);
                        cout << "<< 父进程等待 ctrl + C ..." << endl;
                }
        }
        while (1)
                usleep(100);
        cout << "<< 退出了,whois = " << whois << endl;
        return 0;
}

运行结果截图

思考

  1. RickyAlage说道:

    canadian pharmacy service Large Selection of Medications from Canada legitimate canadian pharmacies

  2. JustinTut说道:

    reputable indian pharmacies https://indiaph24.store/# reputable indian online pharmacy
    india pharmacy

  3. Tylerrogit说道:

    Всё о радиаторах отопления https://heat-komfort.ru/ – выбор радиатора, монтаж, обслуживание.

  4. RickyAlage说道:

    mexican rx online mexican pharmaceuticals online buying prescription drugs in mexico

  5. RickyAlage说道:

    top online pharmacy india Cheapest online pharmacy indian pharmacy

  6. StevenSen说道:

    mexican rx online: medicine in mexico pharmacies – mexico drug stores pharmacies

  7. Michaelsew说道:

    https://canadaph24.pro/# reputable canadian online pharmacy

  8. oborudovan_piSl说道:

    оборудование для ситуационного центра https://oborudovanie-situacionnyh-centrov.ru/ .

  9. RickyAlage说道:

    canadian drug pharmacy canadian king pharmacy reliable canadian pharmacy

  10. RickyAlage说道:

    canadian pharmacy canadian pharmacies canadian pharmacy ed medications

  11. RickyAlage说道:

    best online pharmacies in mexico Online Pharmacies in Mexico mexican pharmaceuticals online

  12. Michaelsew说道:

    https://indiaph24.store/# top online pharmacy india

  13. RickyAlage说道:

    medication from mexico pharmacy Online Pharmacies in Mexico mexican mail order pharmacies

  14. RickyAlage说道:

    mexican mail order pharmacies Online Pharmacies in Mexico pharmacies in mexico that ship to usa

  15. Michaelsew说道:

    http://mexicoph24.life/# best online pharmacies in mexico

  16. StevenSen说道:

    top 10 online pharmacy in india: Generic Medicine India to USA – top 10 pharmacies in india

  17. Michaelsew说道:

    http://indiaph24.store/# india pharmacy

  18. RickyAlage说道:

    mexico pharmacy mexican pharmacy reputable mexican pharmacies online

  19. StevenSen说道:

    mexican online pharmacies prescription drugs: Mexican Pharmacy Online – purple pharmacy mexico price list

  20. RickyAlage说道:

    reliable canadian online pharmacy Prescription Drugs from Canada canadian pharmacies comparison

  21. RickyAlage说道:

    mexican rx online mexican pharmacy mexican border pharmacies shipping to usa

  22. Michaelsew说道:

    https://canadaph24.pro/# canadian pharmacy in canada

  23. RickyAlage说道:

    best online pharmacies in mexico Online Pharmacies in Mexico medication from mexico pharmacy

  24. StevenSen说道:

    india online pharmacy: indian pharmacy – online pharmacy india

  25. RickyAlage说道:

    pharmacy canadian canada drugs online reviews canadian pharmacy com

  26. Michaelsew说道:

    https://mexicoph24.life/# mexico drug stores pharmacies

  27. RickyAlage说道:

    mail order pharmacy india indian pharmacy mail order pharmacy india

  28. RickyAlage说道:

    best online pharmacies in mexico mexico pharmacy pharmacies in mexico that ship to usa

  29. StevenSen说道:

    buy canadian drugs: Large Selection of Medications from Canada – canada discount pharmacy

  30. Michaelsew说道:

    https://canadaph24.pro/# pharmacy canadian superstore

  31. RickyAlage说道:

    canadian family pharmacy Large Selection of Medications from Canada canada pharmacy

  32. RickyAlage说道:

    indian pharmacy online india pharmacy mail order indian pharmacy paypal

  33. Michaelsew说道:

    http://canadaph24.pro/# legit canadian pharmacy online

  34. RickyAlage说道:

    canadianpharmacy com Licensed Canadian Pharmacy thecanadianpharmacy

  35. Michaelsew说道:

    http://canadaph24.pro/# reliable canadian pharmacy

  36. RickyAlage说道:

    global pharmacy canada Certified Canadian Pharmacies best canadian online pharmacy

  37. RickyAlage说道:

    canadian pharmacy drugs online Certified Canadian Pharmacies canadian drugs pharmacy

  38. Michaelsew说道:

    https://indiaph24.store/# top online pharmacy india

  39. RickyAlage说道:

    best online canadian pharmacy Certified Canadian Pharmacies canadian pharmacy online

  40. Michaelsew说道:

    http://mexicoph24.life/# buying prescription drugs in mexico

  41. StevenSen说道:

    mexican mail order pharmacies: mexico pharmacy – mexican rx online

  42. Lancekak说道:

    я уже смотрел обзор здесь https://my-obzor.com/ перед тем, как сделать заказ. Не сказать, что все отзывы были 100% положительные, там уже упоминались основные минусы и плюсы.

  43. Michaelsew说道:

    http://mexicoph24.life/# buying from online mexican pharmacy

  44. RickyAlage说道:

    buying prescription drugs in mexico online buying prescription drugs in mexico mexico pharmacy

  45. Walteronerb说道:

    https://casinvietnam.com/# casino tr?c tuy?n vi?t nam

  46. Walteronerb说道:

    http://casinvietnam.shop/# choi casino tr?c tuy?n tren di?n tho?i

  47. JamesAnirm说道:

    https://casinvietnam.com/# choi casino tr?c tuy?n tren di?n tho?i

  48. Walteronerb说道:

    https://casinvietnam.com/# danh bai tr?c tuy?n

  49. Walteronerb说道:

    https://casinvietnam.shop/# danh bai tr?c tuy?n

回复 Walteronerb 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注