Отправляет email-рассылки с помощью сервиса Sendsay

[prg] быстро закрывается окно программы

Всем привет.
есть программа "nod", которая с помощью printf выводит на печать нод
двух чисел.
Если запускать программу через "cmd", то всё нормально.
а вот если запускать программу через проводник, то она закрывается так
быстро, что nvdaне успевает прочитать результат.
Как бороться с данной напастью?
программа скомпилирована с помощью minGW.

Ответить   Sat, 06 Oct 2012 04:51:36 +0700 (#2569648)

 

Ответы:

Приветствую всех.

Программа делает ровно то, что вы запрограммировали в её коде. Если вы запрограммировали
только вывод результата вычисления НОД, то ничего другого программа по собственной
инициативе делать не будет. Откуда, к примеру, ваша программа может получить
информацию о том, что пользователь ещё просматривает результаты???
Короче, типичная ошибка проектирования: разработчик забыл реализовать интерфейс
взаимодействия с пользователем.

Кроме того, у вас нечеткие представления о том, как выполняется программа (приложение).
В частности, после того как программа завершила свою работу, операционная система
удаляет её из памяти, освобождает все занятые программой ресурсы и, в том числе,
удаляет все окна, созданные программой.
Очевидно, что если вы хотите этого избежать, то в вашем случае не надо завершать
программу без согласия пользователя.
Собственно, cmd.exe так и работает: в основе лежит бесконечный цикл, в котором
ожидается ввод пользовательской команды, затем выполнение этой команды, а затем
вновь возврат к ожиданию пользовательской команды. Только если пользователь введет
команду 'exit', программа cmd.exe прекращает свою работу и, как результат этого,
её окно исчезает с экрана.
Когда вы запускаете свою программу, набирая ее имя в cmd.exe, то ваша программа
наследует потоки ввода и вывода от cmd.exe и не создает своей консоли, т.е. весь
вывод вашей программы идет в окно cmd.exe. Поэтому результат работы вашей программы
остается на экране (ведь окно cmd.exe не закрывается).
Когда вы запускаете вашу программу из Проводника, то ваша программа создает свое
собственное консольное окно для ввода и вывода информации, которое (окно) закрывается
при завершении работы вашей программы.

Надеюсь, сказанного достаточно, чтобы вы сами предложили конкретные решения вашей
напасти.

Успехов. Анатолий.

Ответить   "i_chay" Sun, 7 Oct 2012 09:33:19 +0400 (#2570641)