С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
1

сигналы SIGINT SIGABORT

29.07.2013, 00:47. Показов 2458. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно организовать программу перехвата сигналов:
1. SIGINT - при нажатии ctrl+c
2. SIGABRT - при вызове функции abort()

первое попробовал организовать при бесконечном цикле - не получилось
второе вроде бы перехватывает но при этом выдает ошибку debug error!


как поступить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
using namespace std;
 
#include <csignal>
 
void signalINT(int signalValue);
void signalABRT(int signalValue);
 
int main()
{
    signal( SIGINT, signalINT );
    signal( SIGABRT, signalABRT );
 
    /*
    //бесконечный цикл
    int down=0;
    do
    {
        cout<<"down= "<<down<<endl;
    }
    while(down==0);
    */
    abort();
    return 0;
}
 
void signalINT(int signalValue)
{
    int response=0;
    cout<<"has operated signal SIGINT"<<endl;
    cout<<"continue? 1-yes, 2-no";
    cin>>response;
 
    while(response!=1 && response!=2)
    {
        cout<<"1-yes, 2-no";
        cin>>response;
    }
    signal( SIGINT, signalINT );
}
 
void signalABRT(int signalValue)
{
    cout<<"oops abort() function"<<endl;
    signal( SIGABRT, signalABRT );
}
Добавлено через 41 минуту
up.

Добавлено через 2 часа 54 минуты
up.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2013, 00:47
Ответы с готовыми решениями:

SIGINT с OpenSSL
Приветствую всех! Натыкаюсь в программе (обычная однопоточная консолька, делащая несколько...

Что значат эти сигналы (vmware w, bios сигналы)?
Создаю машину с Kali, при запуске если стоит bios 1 длинный сигнал , если uefi 1 длинный и 1...

Обработка SIGINT
Изначально написан ЭХО-сервер, который работает со многими клиентами на одном порте. Работает...

Сигнал SIGINT и процессы
Здравствуйте, форумчане! В Си новичок, поэтому обращаюсь за советом, нагло прошу помощи. На...

1
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
29.07.2013, 11:05 2
Перехватывать-то перехватывает, но опасно с ними играться.
signal
SIGABRT
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
using namespace std;
 
#include <csignal>
 
void signalINT(int signalValue);
void signalABRT(int signalValue);
 
int main()
{
 
    //бесконечный цикл
    int down=0;
    do
    {
        signal( SIGINT, signalINT );
        signal( SIGABRT, signalABRT );
        cout<<"down= "<<down<<endl;
    Sleep(500);
    down++;
    }
    while(down<=10);
 
    abort();
    return 0;
}
 
void signalINT(int signalValue)
{
    int response=0;
    cout<<"has operated signal SIGINT"<<endl;
    while(response!=1 && response!=2)
    {
        cout<<"1-yes, 2-no";
        cin>>response;
        if(response==1)
          {
          cout << "!!!abort!!!";
          Sleep(500);
          signal( SIGABRT, signalABRT );
          abort();
          }
    }
    //signal( SIGINT, signalINT );
}
 
void signalABRT(int signalValue)
{
    cout<<"oops abort() function"<<endl;
    cin.ignore(2);
    signal( SIGABRT, signalABRT );
}
1
29.07.2013, 11:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2013, 11:05
Помогаю со студенческими работами здесь

Прерывание SIGINT. Почему не завершается программа?
Здравствуйте. Решал такую задачу: 12. Написать программу, предоставляющую информацию обо всех...

Обработка получения сигналов (sigabrt, sigfpe, sigill, sigint, sigsegv, sigterm)
Написать программу, обрабатывающую получение сигналов (SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV,...

Как при срабатывании SIGINT правильно передать значение переменной i в функцию closing
Имеется код: #include &lt;signal.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru