restart programu GTK+ C

1

Witam chciałbym się dowiedzieć czy istnieje jakaś funkcją która by zresetowała główne okno aplikacji w GTK+ coś na przykład jak gtk_main_quit tylko nie zamykająca aplikacje a restartująca, lub każdym innym sposobem?

1

Możesz zrobić:

system("twoja_aplikacja &") ;
gtk_main_quit();

Ale lepszym sposobem jest uruchamianie twojej aplikacji pośrednio, przez jakiś manager. To znaczy, że jeśli chcesz restartować aplikację, to nie zwracasz 0 na końcu programu, tylko na przykład 1. Musisz pamiętać, że to co zwrócisz jest przesunięte o 8 (albo 7, nie pamiętam) bitów w lewo. Przykład

//manager.cpp
#include <cstdio>
#include <cstdlib>

int main(int argc, char**argv)
{
	int a;
	bool restart=true ;
	while(restart)
	{
		//czynności przed uruchomieniem twojego programu
		a = system("twoja_aplikacja") ; //uruchomienie i przypisanie zwróconej wartości do a
		a>>=8 ; //przesunięcie o 8 bitów w prawo(nie pamiętam teraz czy 8 czy 7)
		switch(a)
		{
		    0 : //0 - koniec pracy
		    {
		        restart = false ;
		        break ;
		    }
		    1: //twój umówiony restart
		    {
		        break ;
		    }
		    default: //inna wartość, prawdopodobnie segmentation fault
		    {
		        //czynności po błędzie
		    }
		}		
	}
	//czynności po wyłączeniu twojego programu
	return 0;
}
0

a w poleceniu system("twoja_aplikacja &") ; pod twoja_aplikacja mam wpisać nazwe pliku? bo zrobiłem tak: system("program.c &") ; i działa uruchamia się aplikacja na nowo ale stare okienko się nie zamyka i mam wyświetlone oby dwa. Da się jakoś zamknąć to pierwsze bo gtk_main_quit(); tak jakby nie chciał działac

Cała funkcja działa podobnie otwiera na nowo okno aplikacji ale nie zamyka starego okna i mam 2

1 użytkowników online, w tym zalogowanych: 0, gości: 1