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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 15:22     Повторный запуск main() равен перезапуску программы? #1
Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого памяти и т.д) и если нет, то каким образом в коде можно прописать, чтобы программа запустилась заново? С освобождением все занятой до этого памяти и уничтожением всех созданных объектов? Среда разработки VS2012
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
30.04.2014, 15:26     Повторный запуск main() равен перезапуску программы? #2
Должно быть вам следует смотреть в сторону потоков.
http://www.cplusplus.com/reference/thread/thread/
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 15:27     Повторный запуск main() равен перезапуску программы? #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;
}
Развлекайтесь
имхо, вам можно просто вызывать из консоли вашу же программу, после чего завершать работу. Но могу ошибаться
либо заведите функцию обнуления всех переменных и в том же экземпляре программы сбрасывайте все значения на стартовые
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
30.04.2014, 15:35     Повторный запуск main() равен перезапуску программы? #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 ]
так что не надо
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 15:57  [ТС]     Повторный запуск main() равен перезапуску программы? #5
Вообщем, поступил так:
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(1);
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
30.04.2014, 16:04     Повторный запуск main() равен перезапуску программы? #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
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:07  [ТС]     Повторный запуск main() равен перезапуску программы? #7
Croessmah, а как тогда лучше поступить?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:53     Повторный запуск main() равен перезапуску программы? #8
Цитата Сообщение от CyberGenius Посмотреть сообщение
а как тогда лучше поступить?
а что вам надо?
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:56  [ТС]     Повторный запуск main() равен перезапуску программы? #9
Мне нужно завершить программу и запустить её заново.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.04.2014, 17:12     Повторный запуск main() равен перезапуску программы? #10
Цитата Сообщение от CyberGenius Посмотреть сообщение
Мне нужно завершить программу и запустить её заново.
Для этого должна быть другая программа-менеджер. Не стоит заниматься самозапуском/самозавершением.
С чего вообще возникла необходимость периодического запуска/завершения программы? Может достаточно функции (в новом потоке)?
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 17:23  [ТС]     Повторный запуск main() равен перезапуску программы? #11
Я работаю с библиотекой OpenCV и время от времени она перестает работать как надо, проблема скорей всего с утечками памяти или еще чем то, проблему пока найти не могу. Перезапуск программы решает проблему и является приемлемым решение проблемы на данном этапе.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
30.04.2014, 17:54     Повторный запуск main() равен перезапуску программы? #12
Цитата Сообщение от CyberGenius Посмотреть сообщение
проблему пока найти не могу
Создайте тему, я думаю, вам помогут. Это лучше, чем искать обходные маневры в виде периодического перезапуска.
Цитата Сообщение от CyberGenius Посмотреть сообщение
является приемлемым решение проблемы на данном этапе
Вы же понимаете, что это в любом случае временное решение. И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:04  [ТС]     Повторный запуск main() равен перезапуску программы? #13
Цитата Сообщение от Tulosba Посмотреть сообщение
И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
А чем конкретно плохо такое решение проблемы?
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(0);
}
Обрисую ситуацию, у меня в программе стоит проверка, я знаю наверняка, что в сейчас программа должна получить определенное значение, если она его не получает я понимаю, что возникла проблема и перезапускаю программу.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
30.04.2014, 18:21     Повторный запуск main() равен перезапуску программы? #14
У меня в машине сдуло колесо, я знаю, что это колесо, но я покупаю новую машину.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 18:22     Повторный запуск main() равен перезапуску программы? #15
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
CyberGenius
 Аватар для CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:26  [ТС]     Повторный запуск main() равен перезапуску программы? #16
Цитата Сообщение от TenGen Посмотреть сообщение
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
Это без сомнений, проблему нужно решать. Но как костыль этот вариант не самый ужасный? И рабочий ли?
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
30.04.2014, 18:28     Повторный запуск main() равен перезапуску программы? #17
Это уже не кастыль, а инвалидная коляска. (c)
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 778
Записей в блоге: 10
30.04.2014, 18:42     Повторный запуск main() равен перезапуску программы? #18
Может создать .bat файл с инструкциями по дальнейшими действиям
(Убить наш процесс и запустить заново) и запустить его

Проге самой создать файл ,а потом bat самоудалить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы?
Еще ссылки по теме:

Написать int main() для программы C++
C++ Чтение и запись в файл. Повторный запуск
Организовать диалог на повторный запукск программы C++

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

Или воспользуйтесь поиском по форуму:
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы? #19
CyberGenius, все таки, имхо, лучше либо проблему поправить, либо хотя бы чистить память без завершения приложения. Вы же динамической памятью пользуетесь?
Yandex
Объявления
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы?
Ответ Создать тему
Опции темы

Текущее время: 22:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru