Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
#1

задания из книги Плаугера - C++

25.07.2011, 21:31. Просмотров 816. Ответов 6
Метки нет (Все метки)

из "Standard C Library"
Exercise 1.4. Write a version of assert.h and xassert.c that prints all assertions. Why would you want to use this version?
Exercise 1.5. Write a handler for the signal SIGABRT that writes the prompt:
Continue (y/n)?
to the standard error stream and reads the response from the standard input stream. If the response is yes (in either uppercase or lowercase), the handler should reestablish itself and return control to the abort function.
Why would you want this capability?
Так вот, в задании 1.4 мне не совсем понятен перевод вот этого
that prints all assertions.
А в задании 1.5, как я понял, нужно дать пользователю выбор, при получении программой сигнала SIGABRT решить, продолжить ли выполнение программы, несмотря на получение этого сигнала. Хочется узнать, как это можно осуществить. Как нужно написать обработчик для этого?

Добавлено через 10 часов 23 минуты
Никто не может помочь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2011, 21:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос задания из книги Плаугера (C++):

Задания из книги Р. Лафоре - C++
Добрый день, решаю задачу из книги Лафоре. Если в двух словах, то нужно перевести строку в long double. Вот листинг решения: ...

Задания из книги Р. Лафоре - C++
Приветствую всех! Выполняю задание из книги Р. Лафоре "ООП в С++". Задание главы 7. Одним из недостатков C++ являеться отсутствие...

Не получается собрать проект из задания книги Страуструпа - C++
Здравствуйте уважаемые форумчане. Изучаю материал "Принципы и практика использования C++" Страуструпа. Выполняют задание из 8 главы. ...

Задача из книги Дейтел-а не могу суть задания уловить - C++
Привет, всем! Хочу спросить вот о чём: в книге Дейтел Х. Дейте П. есть задача смущает меня задача из пункта b) 5 - случайную смесь...

Выполняя задания из книги Стенли Липпмана допустил ошибку. Не могу понять где. - C++
Выполняя задания из книги Стенли Липпмана не могу понять где ошибка в коде с оператором While /*#include<iostream> using namespace...

Ищу ответы на задания из книги Лафоре Р. "Объектно-ориентированное программирование в С++" 4 издание. - C++
Дошел до 10 главы, из каждой главы делал все 12 заданий, хочу проверить правильно ли я их делал. И еще нужны ответы на вопросы которые идут...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,001
26.07.2011, 00:22 #2
По поводу 1.4 я точно знать не могу. Но мысли кое-какие есть.
Обычная версия assert ничего не делает, если выражение истинно, а если ложно, то выводит сообщение assertion failed, номер строки и т.д. с выходом из программы.
По-моему имеется в виду такая версия, которая бы выводила сообщение типа Assertion OK при истинном выражении (разумеется без выхода) по аналогии с обычным сообщением assert.
1
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
26.07.2011, 10:35  [ТС] #3
А вот по второму заданию. Можно ли написать обработчик сигнала SIGABRT так, чтобы после вызова функции abort() программа не завершалась, а выполнение продолжалось с инструкции, следующей за abort()?
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 10:48 #4
stdcout, Можно. Только вопрос про какую систему здесь говориться? Хотя boost позволяет написать универсальное скорее всего
1
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
26.07.2011, 13:01  [ТС] #5
Речь идёт о C, и похоже, что только средствами стандартной библиотеки.
0
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,001
26.07.2011, 14:28 #6
Цитата Сообщение от stdcout Посмотреть сообщение
Можно ли написать обработчик сигнала SIGABRT так, чтобы после вызова функции abort() программа не завершалась, а выполнение продолжалось с инструкции, следующей за abort()
Может быть для некоторых компиляторов.
У меня GCC после безусловного вызова abort() дальнейший код даже не генерирует. Какой уж там возврат, если код для исполнения закончился. Другое дело если обработчик вызывается через raise(SIGABRT), но в задании-то не так.

Добавлено через 7 минут
Хотя, с другой стороны, безусловный abort() в реальной программе тоже странное явление. Надо будет попробовать с вызовом по некоторому условию.

Добавлено через 28 минут
Не, в случае условного выхода делается переход на вызов abort() за которым опять ничего нет.
1
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
26.07.2011, 15:23 #7
После посыла сигнала kill -6 нормуль все работает.

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
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
 
void sig_handler(int signo)
{
    fprintf(stderr, "%s\n", "Sighandler called");
    return;
}
 
void function(void)
{
    fprintf(stderr, "%s\n", __FUNCTION__);
    sleep(20);
}
 
int main(void)
{
    signal(SIGABRT, sig_handler);
    while(1)
    {
        fprint(stderr, "%s\n", loop);
        function();
    }
}
А вот при вызове abort из кода хуже.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 15:23
Привет! Вот еще темы с ответами:

Описать структуру Bibliotec, содержащую следующие поля: автор книги, инвентарный номер книги, название книги - C++
Описать структуру BIBLIOTEC содержащий следующие поля: автор книги , инвентарный номер книги , название книги. Подсчитать , книги скольких...

Книги Г.Шилдта в каком порядке нужно или какие книги для изучения с++ - C++
Скажите в каком порядке надо читать книги Г.Шилдта для изучения с++ . Возможно сначала придется с учить , или как лучше ? Или подскажите...

Книги по С++ (что читать после книги Дейтела "Как программировать на С++") - C++
Добрый день господа!!! Я от можно сказать дочитываю Дейтела &quot;Как программировать на С++&quot; 5 издание, и от думаю какую следующую книгу...

Задания из книги - Visual Basic
задание 16 - с.63 задание 17 - с.66 задание 18 - с.69 задание 19 - с.71 задание 20 - с.74 из книги VB.pdf Нарушение...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.07.2011, 15:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru