Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/10/2007, à 11:46

netsuai

[Résolu] Fermer le terminal en C

Existe-t'il une commande en C pour fermer automatiquement le terminal ?
Du genre sytem("clear") qui efface l'écran. J'ai fais un programme en C avec une option quitter mais cela permet de sortir du programme mais pas de fermer le terminal. Il faut encore faire Enter pour cela.

Dernière modification par netsuai (Le 14/10/2007, à 10:23)


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#2 Le 08/10/2007, à 12:26

LittleWhite

Re : [Résolu] Fermer le terminal en C

tu peux essayer de faire
system("exit");
Car la commande system execute une commande du terminal.
J'espère que je t'aurais aidé

#3 Le 08/10/2007, à 12:45

netsuai

Re : [Résolu] Fermer le terminal en C

LittleWhite a écrit :

tu peux essayer de faire
system("exit");
Car la commande system execute une commande du terminal.
J'espère que je t'aurais aidé

Merci, mais j'avais déjà testé. Idem pour "quit". Cela permet de sortir du programme (exit) mais pas de fermer le terminal.


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#4 Le 08/10/2007, à 12:59

trucutu

Re : [Résolu] Fermer le terminal en C

Si tu veux vraiment fermer le terminal depuis ton programme, il faut que tu récupère son pid (pid du processus parent de ton programme) et le tuer par un kill, il me semble...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#5 Le 09/10/2007, à 12:25

LittleWhite

Re : [Résolu] Fermer le terminal en C

J'ai une question ton programme tu le lance en ligne de commande dans le terminal et non en double cliquant sur l'executable?

#6 Le 09/10/2007, à 15:29

netsuai

Re : [Résolu] Fermer le terminal en C

LittleWhite a écrit :

J'ai une question ton programme tu le lance en ligne de commande dans le terminal et non en double cliquant sur l'executable?

Exact oui.  Je n'avais jamais testé autrement, mais de toute façon, rien ne se passe. Pourtant dans les permissions, j'ai autorisé l'exécution du programme. Mais comme il n'y à pas de graphisme, je suppose qu'il liu faut le terminal pour fonctionner.


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#7 Le 10/10/2007, à 08:16

LittleWhite

Re : [Résolu] Fermer le terminal en C

Donc si ton programme et toujours lancé dans une console, lui il ne lance pas de console.
Je crois que la solution de trutucu est la plus intéréssante.
Mais sur le coup je ne vois pas comment la coder.
En graphique même si ton programme semble ne pas se lancé il se lance tu peux verifier dans le gestionnaire des taches pour savoir s'il est présent. ( avec un programme qui tourne a l'infini )
Donc ton programme même si tu le vois travaille est fait ce que tu as codé. Si tu code la fermeture du terminal alors qu'il n'y en a pas cela peut posé problème.

Si je me trompe arretez moi.

Aussi non c'est essentiel de fermer le terminal pour toi?

#8 Le 10/10/2007, à 09:40

trucutu

Re : [Résolu] Fermer le terminal en C

LittleWhite a écrit :

Mais sur le coup je ne vois pas comment la coder.

Je ne sais pas si avec une fonction du type getppid ca marcherai pour récupérer le processus du père (la console).
Sinon, tu récupère la sortie de ps ... | grep "console" ... Mais ce n'est pas très portable...


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#9 Le 10/10/2007, à 19:23

netsuai

Re : [Résolu] Fermer le terminal en C

LittleWhite a écrit :

Aussi non c'est essentiel de fermer le terminal pour toi?

Non, c'est juste pour faire plus joli.:rolleyes:


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#10 Le 12/10/2007, à 12:47

LittleWhite

Re : [Résolu] Fermer le terminal en C

netsual a ecrit:

Non, c'est juste pour faire plus joli.

Oui je comprends, je crois que tout développeur tente de s'approcher de la perfection.

D'après le man de getpid ( : man 2 geppid )
La fonction renvoie le pid du père ( processus appelant qui doit normalement correspondre a la console où tu lance ton programme )
Après tu peux faire un kill ( : man 2 kill ) pour tué le processus en envoyant le pid et puis le signal pour le tué ( je ne sais pas où trouver le code du signal mais je crois que c'est SIGTERM ; on peut trouver les signaux dans le fichier signal.h ( usr/include/ ou une autre doc )

Il se peut que cette méthode est très dangereuse comme ton programme tourne dans la console et que tu va tué la console avant de fermer ton programme celui-ci peut peut-être se retrouver zombie ( enfin j'ai un doute car je ne suis plus trop sur de comment un programme devient zombie )

Si tu veux fermer la console a chaque fois que ton programme se quitte ( même en cas de bug ) tu peux mettre les fonctions ( getppid et kill ) dans une fonction : void Quitter ( void ) et l'appeler avec un atexit ( man 3 atexit )

Ceci est très pratique dans beaucoup de cas car atexit permet de lancer la fonction passer en argument au moment ou ton programme se ferme et ceci dans tout les cas.

Enfin je dit tout cela c'était juste pour information.
En espérant d'avoir aidé.

#11 Le 12/10/2007, à 18:12

Link31

Re : [Résolu] Fermer le terminal en C

Et si par hasard le processus était lancé par l'environnement de bureau (par exemple kdeinit sous KDE qui lance les programmes quand on utilise alt+f2) ? Dans ce cas, tuer le processus père pourrait finir très mal.
À mon avis, c'est une mauvaise idée.

Hors ligne

#12 Le 12/10/2007, à 19:09

Badrechkova

Re : [Résolu] Fermer le terminal en C

Bonjours les amis, bon voia je vien de passer de windows a linux donc pour moi le code source et tout ça c'est presque du charabia ^^" ! Enfin je sais saisire quelques commende mais j'ignore leur définition ! Donc voila je voudrais juste savoir si quelqu'un pourrais m'expliquer en quelque sorte leur role !! Merci d'avance smile
PS: eu une autre question, je voudrais accéder a 'user' appartire du terminal si c'est possible. Comment faire?
Encore merci big_smile

Hors ligne

#13 Le 12/10/2007, à 19:34

netsuai

Re : [Résolu] Fermer le terminal en C

Merci à tous pour toutes les infos. Mais je crois que je me contenterais de sa forme actuelle. La méthode des kill et autre ne me semble pas être à la porté de tous. Je suis pas très pour les zombies.

Merci.


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#14 Le 12/10/2007, à 19:36

netsuai

Re : [Résolu] Fermer le terminal en C

Badrechkova a écrit :

Bonjours les amis, bon voia je vien de passer de windows a linux donc pour moi le code source et tout ça c'est presque du charabia ^^" ! Enfin je sais saisire quelques commende mais j'ignore leur définition ! Donc voila je voudrais juste savoir si quelqu'un pourrais m'expliquer en quelque sorte leur role !! Merci d'avance smile
PS: eu une autre question, je voudrais accéder a 'user' appartire du terminal si c'est possible. Comment faire?
Encore merci big_smile

Bonjour,
Un petit tours dans la doc : http://doc.ubuntu-fr.org/console/ligne_de_commanderoll


La seule question idiote est celle que l'on ne pose pas.
netsuai

Hors ligne

#15 Le 12/10/2007, à 23:22

Badrechkova

Re : [Résolu] Fermer le terminal en C

Merci infiniment ^^ très sympa wink !

Hors ligne

#16 Le 13/10/2007, à 14:31

Badrechkova

Re : [Résolu] Fermer le terminal en C

Bonjours tout le monde ^^ voila j'ai un problème avec ubuntu au démmarage en effet après son chargement il n'y a pas d'affichage de login manager j'ai le petit curseur de chargement qui apparait et ubuntu reste bloquer sous fond noir, je ne peux pas y acceder svp comment faire ^^' merci d'avance !

Hors ligne

#17 Le 13/10/2007, à 15:40

Ner0lph

Re : [Résolu] Fermer le terminal en C

Badrechkova a écrit :

Bonjours tout le monde ^^ voila j'ai un problème avec ubuntu au démmarage en effet après son chargement il n'y a pas d'affichage de login manager j'ai le petit curseur de chargement qui apparait et ubuntu reste bloquer sous fond noir, je ne peux pas y acceder svp comment faire ^^' merci d'avance !

http://forum.ubuntu-fr.org/misc.php?action=rules

Hors ligne

#18 Le 13/10/2007, à 16:53

Badrechkova

Re : [Résolu] Fermer le terminal en C

Ah ^^" thx !:D

Hors ligne