2016-03-21 11 views
0

Ich habe eine einfache Terminal-App, die ich schließen möchte, nachdem sie beendet ist (schließen Sie tatsächlich die Terminal-Instanz, die sie geöffnet hat).Terminal-Mac-Anwendung programmgesteuert beenden?

Es gibt viele Fragen darüber, wie man Mac-Anwendungen killt, aber keine von ihnen scheint auf Terminal-Mac-Anwendungen zu gelten.

Ich habe versucht mit dem folgenden am Ende meines Programms:

NSApplication.sharedApplication().terminate(0) 

und

kill(getppid(), SIGKILL); 

aber keiner von ihnen tatsächlich das Fenster schließen. Kann mir jemand in die richtige Richtung zeigen, oder wenn das überhaupt möglich ist?

+4

Was passiert, wenn der Benutzer bereits ein anderes Terminalfenster geöffnet hat? Ich habe normalerweise mindestens ein paar Terminal-Fenster geöffnet, und ich wäre mehr als genervt, wenn das Ausführen eines Befehls dazu führen würde, dass Terminal beendet wird. – Caleb

+0

Richtig, ich möchte nur meine Terminal-App schließen, ich bin mir einfach nicht sicher, wie es zu tun ist, da es nicht so gut dokumentiert ist, soweit ich das beurteilen kann. –

+0

Ich bin mir immer noch nicht sicher, worauf du hinaus willst. Sprechen Sie über Terminal.app, den Terminal-Emulator, der mit MacOS X geliefert wird, oder haben Sie einen eigenen Terminalemulator geschrieben? – Caleb

Antwort

0

einfach ausführen:

exit(0); 

... sofort jedes MAC-Verfahren beenden, ob ein Terminal Befehlszeilenprogramm oder eine volle GUI-Anwendung.

Sie sollten es nicht in einer GUI-App tun, da alles umgangen werden würde, um Benutzerdaten vor dem Beenden zu speichern, aber es ist die korrekte Funktion innerhalb des Terminals.

Das Terminalfenster wird nur geschlossen, wenn das Befehlszeilentool nicht in einer Shell ausgeführt wird. Selbst dann wird Terminal das Fenster nur schließen, wenn "wenn die Shell beendet wird" auf "das Fenster schließen" oder "das Fenster schließen, wenn die Shell sauber beendet wurde" eingestellt ist.

Die zum Beenden bereitgestellte Nummer 0 bedeutet, dass Ihr Tool sauber beendet wurde. Geben Sie eine andere Zahl zurück, um zu verhindern, dass das Fenster geschlossen wird (und Sie sollten eine Fehlermeldung ausgeben).

Verwandte Themen