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

Повторный запуск main() равен перезапуску программы?

30.04.2014, 15:22. Показов 14435. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого памяти и т.д) и если нет, то каким образом в коде можно прописать, чтобы программа запустилась заново? С освобождением все занятой до этого памяти и уничтожением всех созданных объектов? Среда разработки VS2012
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2014, 15:22
Ответы с готовыми решениями:

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

Предотвратить повторный запуск программы
Приветствую Возникла проблема: Если запустить program.exe ещё раз (когда один экземпляр уже...

Как запретить повторный запуск программы
При загрузке формы запретить запуск этой формы еще раз , допустим что бы выводило "Это программа...

Повторный запуск программы с функцией plotyy
Здравствуйте! Помогите пожалуйста. Вот часть моей программы: pd2=P2(1,1:razm); pd3=P3(1,1:razm);...

18
Эксперт по математике/физикеЭксперт С++
2206 / 1411 / 411
Регистрация: 16.05.2013
Сообщений: 3,597
Записей в блоге: 6
30.04.2014, 15:26 2
Должно быть вам следует смотреть в сторону потоков.
http://www.cplusplus.com/reference/thread/thread/
0
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 15:27 3
CyberGenius,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int i = 4;
 
int main()
{
    if ((--i) != 0)
    {
        printf("%i\n", i);
        main();
    }
    return 0;
}
Развлекайтесь
имхо, вам можно просто вызывать из консоли вашу же программу, после чего завершать работу. Но могу ошибаться
либо заведите функцию обнуления всех переменных и в том же экземпляре программы сбрасывайте все значения на стартовые
1
Неэпический
18107 / 10694 / 2062
Регистрация: 27.09.2012
Сообщений: 26,927
Записей в блоге: 1
30.04.2014, 15:35 4
Цитата Сообщение от CyberGenius Посмотреть сообщение
Если в коде какой либо функции я вызову main()
3.6 Start and termination
3.6.1 Main function
...
3
The function main shall not be used within a program. The linkage (3.5) of main is implementation-defined. A program that defines main as deleted or that declares main to be inline, static, or constexpr is ill-formed. The name main is not otherwise reserved. [ Example: member functions, classes, and enumerations can be called main, as can entities in other namespaces. — end example ]
так что не надо
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 15:57  [ТС] 5
Вообщем, поступил так:
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(1);
}
0
Неэпический
18107 / 10694 / 2062
Регистрация: 27.09.2012
Сообщений: 26,927
Записей в блоге: 1
30.04.2014, 16:04 6
Цитата Сообщение от CyberGenius Посмотреть сообщение
exit(1);
уберите эту ересь.
Просто для примера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
 
struct TEST
{
   TEST () {
      std::cout << "TEST()" << std::endl ;
   }
   ~TEST () {
      std::cout << "~TEST()" << std::endl ;
   }
} ;
 
int foo ()
{
   exit ( 0 ) ;
}
 
int main ()
{
   TEST t ;
   foo();
}
http://ideone.com/aEAqiB
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:07  [ТС] 7
Croessmah, а как тогда лучше поступить?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
30.04.2014, 16:53 8
Цитата Сообщение от CyberGenius Посмотреть сообщение
а как тогда лучше поступить?
а что вам надо?
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:56  [ТС] 9
Мне нужно завершить программу и запустить её заново.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.04.2014, 17:12 10
Цитата Сообщение от CyberGenius Посмотреть сообщение
Мне нужно завершить программу и запустить её заново.
Для этого должна быть другая программа-менеджер. Не стоит заниматься самозапуском/самозавершением.
С чего вообще возникла необходимость периодического запуска/завершения программы? Может достаточно функции (в новом потоке)?
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 17:23  [ТС] 11
Я работаю с библиотекой OpenCV и время от времени она перестает работать как надо, проблема скорей всего с утечками памяти или еще чем то, проблему пока найти не могу. Перезапуск программы решает проблему и является приемлемым решение проблемы на данном этапе.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.04.2014, 17:54 12
Цитата Сообщение от CyberGenius Посмотреть сообщение
проблему пока найти не могу
Создайте тему, я думаю, вам помогут. Это лучше, чем искать обходные маневры в виде периодического перезапуска.
Цитата Сообщение от CyberGenius Посмотреть сообщение
является приемлемым решение проблемы на данном этапе
Вы же понимаете, что это в любом случае временное решение. И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:04  [ТС] 13
Цитата Сообщение от Tulosba Посмотреть сообщение
И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
А чем конкретно плохо такое решение проблемы?
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(0);
}
Обрисую ситуацию, у меня в программе стоит проверка, я знаю наверняка, что в сейчас программа должна получить определенное значение, если она его не получает я понимаю, что возникла проблема и перезапускаю программу.
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
30.04.2014, 18:21 14
У меня в машине сдуло колесо, я знаю, что это колесо, но я покупаю новую машину.
0
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 18:22 15
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
0
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:26  [ТС] 16
Цитата Сообщение от TenGen Посмотреть сообщение
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
Это без сомнений, проблему нужно решать. Но как костыль этот вариант не самый ужасный? И рабочий ли?
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
30.04.2014, 18:28 17
Это уже не кастыль, а инвалидная коляска. (c)
1
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
30.04.2014, 18:42 18
Может создать .bat файл с инструкциями по дальнейшими действиям
(Убить наш процесс и запустить заново) и запустить его

Проге самой создать файл ,а потом bat самоудалить
0
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 19:58 19
CyberGenius, все таки, имхо, лучше либо проблему поправить, либо хотя бы чистить память без завершения приложения. Вы же динамической памятью пользуетесь?
0
30.04.2014, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2014, 19:58
Помогаю со студенческими работами здесь

Запуск программы из под main
Доброго времени суток. Есть метод который нужно вызвать из под main, немного парюсь с возвратом,...

Повторный запуск
На работе создал скрипт-программу backup.ps1 которая бекапит базу пользователей каждые 30 минут,...

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

Повторный запуск потоков
Добрый день всем. Необходима ваша помощь в следующем вопросе. Есть некий гипотетический код: ...


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

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