Seite 1 von 1

curses - "Error opening terminal"

Verfasst: Montag 24. April 2006, 10:11
von Rebecca
Hallo allerseits!

Wenn man ein Terminal benutzt, dass von der curses-Bibliothek nicht unterstuetzt wird, bekommt man beim Ausfuehren eines curses-Skripts die Fehlermeldung

Code: Alles auswählen

Error opening terminal: some_term.
und das Programm beendet sich. Ich frage mich, ob es irgendeine Moeglichkeit gibt, das abzufangen? Ich wuerde gerne dem User etwas ausfuehrlichere Informationen mitliefern, wenn dieses Problem auftritt. Dummerweise scheint da keine Exception im Spiel zu sein: Mit TERM=some_term produziert

Code: Alles auswählen

#! /usr/bin/env python

import curses

try:
    stdscr = curses.initscr()
    curses.endwin()
except:
    print "Error!"

print "Bye!"
einfach nur die oben genannte Fehlermeldung. :roll:

Mmh...
Python Doku hat geschrieben:initscr()
[...] Note: If there is an error opening the terminal, the underlying curses library may cause the interpreter to exit.
... wie genau habe ich mir 'cause the interpreter to exit' vorzustellen?

Re: curses - "Error opening terminal"

Verfasst: Montag 24. April 2006, 22:22
von BlackJack
Rebecca hat geschrieben:Mmh...
Python Doku hat geschrieben:initscr()
[...] Note: If there is an error opening the terminal, the underlying curses library may cause the interpreter to exit.
... wie genau habe ich mir 'cause the interpreter to exit' vorzustellen?
Darunter hast Du Dir vorzustellen, dass die curses Bibliothek, also der Teil der mit Python eigentlich nichts zu tun hat, die C-Funktion `exit()` aufruft und damit Dein Programm beendet. Das ist irgendwie blöd, aber von Python aus wohl nicht zu verhindern.

Würgaround wäre es vielleicht ein Skript von Deinem eigentlichen Skript zu starten, das nur versucht `curses` zu benutzen und einen entsprechenden Rückgabewert liefert, wenn es geklappt hat.

Re: curses - "Error opening terminal"

Verfasst: Dienstag 25. April 2006, 10:00
von Rebecca
BlackJack hat geschrieben:Würgaround wäre es vielleicht ein Skript von Deinem eigentlichen Skript zu starten, das nur versucht `curses` zu benutzen und einen entsprechenden Rückgabewert liefert, wenn es geklappt hat.
Auf die Idee bin ich ja noch gar nicht gekommen! :)
Naja, mal sehen...

Verfasst: Dienstag 25. April 2006, 15:51
von mitsuhiko
Oder mit Hilfe von atexit was tricksen. Aber da die unterliegende curses lib den exit erreicht wird das nicht unbedingt helfen. :(