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

/ 4,837评论 / 18843阅读 / 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. Lazrfqz说道:

    Привет!
    Приобрести диплом любого ВУЗа.
    cyclopede.com/cb-profile/pluginclass/cbblogs?action=blogs&func=show&id=270

  2. Uazrgql说道:

    Добрый день!
    Где заказать диплом специалиста?
    mail.vinpr.org/obshestvo/6459-attestat-ob-okonchanii-sredney-shkoly-poluchaem.html

  3. музыкальное оборудование для актового зала http://www.oborudovanija-dlja-aktovyh-zalov.ru/ .

  4. Dnrteef说道:

    Привет!
    Купить документ ВУЗа можно в нашей компании в столице.
    diplomasx.com/otzyvy
    Удачи!

  5. Lazrnbx说道:

    Привет!
    Мы готовы предложить дипломы любой профессии по приятным тарифам.
    http://www.webby.co/диплом-программиста-купить/

  6. Lazrrga说道:

    Здравствуйте!
    Купить диплом о высшем образовании.
    lastdemo.primepix.ru/club/user/88/blog/8745/

  7. Davidnic说道:

    Головні новини https://status.net.ua сьогодні, найсвіжіші та останні новини України онлайн

  8. Lazrsrc说道:

    Добрый день!
    Мы можем предложить дипломы любых профессий по доступным тарифам.
    eicolumbaira.es/купить-диплом-онлайн/

  9. Mazrlcx说道:

    Здравствуйте!
    Быстрое обучение и получение диплома магистра – возможно ли это?
    cnktdshanoi.com.vn/речной-диплом-купить/

  10. Uazrnow说道:

    Здравствуйте!
    Заказать диплом любого университета.
    rorp.4admins.ru/ucp.php?mode=register&sid=4c23f995c82964a6f38326f5044d7675

  11. Lazrhlm说道:

    Добрый день!
    Мы изготавливаем дипломы любых профессий по выгодным ценам.
    avtobestnews.ru/diplomyi-s-garantiey-podlinnosti-i-kachestva

  12. ShawnArede说道:

    Новини України https://sensus.org.ua та світу сьогодні. Головні та останні новини дня

  13. Lazrxiw说道:

    Здравствуйте!
    Купить диплом о высшем образовании.
    ingprint.ru/club/user/58725/forum/message/6909/203474/

  14. Dnrtrnu说道:

    Добрый день!
    Купить документ о получении высшего образования вы имеете возможность в нашей компании.
    ast-diplomas.com/kupit-diplom-krasnoyarsk
    Успешной учебы!

  15. Sazrtje说道:

    Здравствуйте!
    Мы можем предложить дипломы психологов, юристов, экономистов и прочих профессий по приятным тарифам. Цена будет зависеть от выбранной специальности, года получения и университета. Всегда стараемся поддерживать для заказчиков адекватную политику тарифов. Важно, чтобы документы были доступными для большинства граждан.
    umorforme.ru/zakazat-diplom-onlayn-prosto-i-udobno

  16. Diplomi_xfol说道:

    Привет, друзья!
    Заказать документ о получении высшего образования вы сможете в нашей компании.
    asxdiplomik24.ru/kupit-diplom-tehnikuma-kolledzha 

  17. Mazrpvz说道:

    Добрый день!
    Полезные советы по безопасной покупке диплома о высшем образовании
    http://www.irc71.ru/index.php/jomsocial/groups/viewbulletin/260-4-klyuchevykh-gruppy-onlajn-magazinov-chto-prodayut-diplomy?groupid=47

  18. Davidanymn说道:

    Свіжі новини України https://lenta.kyiv.ua останні новини з-за кордону, новини політики, економіки, спорту, культури.

  19. Dnrtuji说道:

    Привет!
    Заказать документ ВУЗа можно у нас в Москве.
    ast-diplomy.com/kupit-diplom-sankt-peterburg
    Успехов в учебе!

  20. Uazrbwj说道:

    Здравствуйте!
    Приобрести диплом о высшем образовании.
    torica.4adm.ru/posting.php?mode=post&f=6&sid=5d148656dabdeab1fe9d7710e924cb26

  21. Trefuom说道:

    Привет!
    Можно ли купить аттестат о среднем образовании, основные моменты и вопросы
    samgalleria.com/диплом-о-среднем-образовании-купить-н-2/
    Рады оказаться полезными!.

  22. Diplomi_zaol说道:

    Добрый день!
    Купить документ ВУЗа вы сможете в нашем сервисе.
    ast-diploms.com/kupit-diplom-kandidata-nauk 

  23. Lazregn说道:

    Привет!
    Мы можем предложить дипломы любых профессий по доступным тарифам.
    iujgr.com/index.php?threads/Купить-Диплом-Мгимо.719/

  24. Danrhny说道:

    Здравствуйте!
    Мы можем предложить дипломы любой профессии.
    encontrocentral.com/read-blog/2100_ishem-nadezhnyj-i-proverennyj-internet-magazin-s-diplomami.html
    Окажем помощь!.

  25. Lazroyh说道:

    Здравствуйте!
    Мы изготавливаем дипломы психологов, юристов, экономистов и прочих профессий по невысоким ценам.
    vistasalamat.com/диплом-магистра-2014-20242024-фото/

  26. Sazrtai说道:

    Привет, друзья!
    Мы готовы предложить дипломы любых профессий по приятным ценам. Стоимость зависит от определенной специальности, года получения и образовательного учреждения. Всегда стараемся поддерживать для покупателей адекватную политику цен. Для нас важно, чтобы документы были доступны для подавляющей массы граждан.
    allukrnews.ru/diplom-bez-stressa-vasha-klyuch-k-preuspevayushhemu-budushhemu/

  27. Lazrcnp说道:

    Добрый день!
    Мы предлагаем дипломы любой профессии по доступным ценам.
    br-totalbyg.dk/2024/06/24/диплом-в-три-клика/

  28. система оснащения конференц залов http://oborudovanie-konferenc-zalov.ru .

发表回复

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