Comment fermer une application à lui-même et un terminal?
Dans mon C application console, je voudrais quitter l'application et sur le même temps le feu d'une commande exit pour fermer un terminal. Cependant, d'après le code ne semble pas fonctionner. Une fois que je lance l'application, il vous quittez l'application, mais ne pas fermer le terminal.
int main(void)
{
system("exit");
return 0;
}
Veuillez donner tout conseil.
je pense que c'est quelque chose qui doit être installé sur l'OS , pas dans le programme lui-même.
OriginalL'auteur 9Ake | 2011-08-04
Vous devez vous connecter pour publier un commentaire.
La
system
commande crée un nouveau shell processus et les enjeux de la commande de shell, de sorte que lorsque vous émettezexit
il va fermer la nouvelle coque.La façon de faire ce que vous demandez est-ce:
Cependant, c'est UNE MAUVAISE IDÉE (pour de nombreuses raisons: vous êtes aveugle tuant certains processus qui a donné naissance à la vôtre, sans réelle idée de ce qu'il est réellement... il pourrait être l'utilisateur du shell de connexion, ou peut-être
init
). Vous avez probablement juste de vouloir fermer la fenêtre de terminal, droit? Ensuite, lancez votre programme comme ceci:Cela permettra de exécuter votre programme dans sa propre fenêtre qui se ferme lorsque le programme se termine. Pas de tricherie, et il fonctionne avec n'importe quel programme.
SIGTERM
être plus agréable?Essayez-la. SIGTERM échoue, SIGKILL réussit. (Et du meurtre d'un processus inconnu ne va pas être agréable en premier lieu. C'est comme les querelles, si vous devez rob quelqu'un couteau sur la gorge ou sous la menace des armes, et lequel des deux est le plus agréable.)
Merci beaucoup pour toutes les réponses ici. C'est exactement ce que je recherche.
OriginalL'auteur Dietrich Epp
Votre commande "exit" n'est pas envoyé à la coquille qui a lancé votre programme, mais plutôt un nouveau shell, exécuté expressément aux fins de l'exécution de votre commande. Il n'est pas accomplir quoi que ce soit.
Il n'y a aucun moyen pour votre programme à proprement quitter le shell qui l'a lancé sans une certaine coopération de cette carapace. Par exemple, en supposant que nous sommes en cours d'exécution avec bash ou Bourne shell sur UNIX, si dans le terminal, vous commencez votre programme à l'aide de
puis le lancement du shell est remplacé par votre programme, et lors de vos sorties de programme, le shell sorties.
OriginalL'auteur Ernest Friedman-Hill
Peut-être que cela ne fonctionne pas si Vous utilisez le signal sur la cessation du programme. un. k. un.
OriginalL'auteur Constantine Samoilenko
Si vous voulez juste pour compiler, exécuter, puis fermez la fenêtre, vous pouvez créer un fichier, puis tout ce que vous devez faire est de taper rendre à l'invite de commandes. Pour ce faire avec votre fichier, vous pouvez faire quelque chose comme ceci:
Je n'ai pas tester, mais c'est essentiellement ce dont vous avez besoin. Voici un autre exemple d'un fichier: http://www-rohan.sdsu.edu/faculty/gleonard/html/Makefile
Que l'on va supprimer le fichier qui est créé de sorte que vous ne recevez pas le "dossier est à jour" erreur. Espérons que cela aide
OriginalL'auteur Frank
Simple - il suffit de l'exécuter sur windows. Le terminal ins windows va fermer automatiquement à chaque fois que votre programme se termine. (Peut-être il ya un moyen de changer cela, mais je ne suis pas au courant de tout).
Mais je prends ça que vous cherchez quelque chose de particulier à C. Désolé, mais vous êtes hors de la chance. Tout va spécifique au système d'exploitation. Par exemple, imaginez que yo travaillez sur un vieux système ms-DOS ou quelque chose, où tout ce qui existe est la console. Vous ne pouvez pas vraiment fermer le terminal, à l'exception de l'arrêt, parce que tout ce qui est là. Cet exemple devrait au moins d'illustrer comment un langage tel que le C ne peut pas garantir cette fonctionnalité.
OriginalL'auteur Ken Wayne VanderLinde
Bien, 9Ake, vous devez utiliser void main() à la place de int main(void)
et vous avez besoin d'appeler le getch(); la fonction à la fin des procédures à l'intérieur de main() et inclure l'en-tête 'conio.h' tout en haut de votre programme.
OriginalL'auteur yayayokoho3