Start · Sprachen · PHP · Referenz · posix_ctermid

posix_ctermid

Funktion

Liefert den Pfad des kontrollierenden Terminals (z. B. <code>/dev/tty</code>) des aktuellen Prozesses.

seit PHP 4.0.0 Kategorie: misc

Signatur

posix_ctermid(): string|false

Beschreibung

posix_ctermid() gibt den Pfad des kontrollierenden Terminals zurück, das dem aktuellen Prozess zugeordnet ist. Auf POSIX-Systemen ist dies typischerweise /dev/tty, kann aber je nach Betriebssystem und Umgebung variieren.

Die Funktion ist nützlich, wenn ein Skript direkt mit dem Terminal des Benutzers interagieren muss – unabhängig davon, wohin Standardein- und -ausgabe umgeleitet wurden. Über den zurückgegebenen Pfad lässt sich die Gerätedatei explizit öffnen und für Terminaleingaben oder -ausgaben nutzen.

Die Funktion steht nur auf POSIX-kompatiblen Systemen (Linux, macOS, BSD) zur Verfügung und ist auf Windows nicht vorhanden. Sie erfordert die POSIX-Erweiterung, die unter Linux in der Regel standardmäßig aktiviert ist.

Rückgabewert

Typ
string|false
Beschreibung
Gibt einen String mit dem Pfad des kontrollierenden Terminals zurück (z. B. /dev/tty), oder false bei einem Fehler.

Beispiele

Pfad des kontrollierenden Terminals ermitteln

<?php
$terminal = posix_ctermid();
if ($terminal === false) {
    echo "Kein kontrollierendes Terminal gefunden.\n";
} else {
    echo "Kontrollierendes Terminal: " . $terminal . "\n";
}
Kontrollierendes Terminal: /dev/tty

Direkte Ausgabe auf das kontrollierende Terminal

<?php
$termPath = posix_ctermid();
if ($termPath !== false) {
    $fh = fopen($termPath, 'w');
    if ($fh) {
        fwrite($fh, "Diese Nachricht geht direkt ans Terminal, nicht an stdout.\n");
        fclose($fh);
    } else {
        echo "Konnte das Terminal nicht öffnen.\n";
    }
} else {
    echo "posix_ctermid() fehlgeschlagen.\n";
}
Diese Nachricht geht direkt ans Terminal, nicht an stdout.

// Wichtig · Fallstricke

Plattformabhängigkeit: posix_ctermid() ist ausschließlich auf POSIX-kompatiblen Systemen verfügbar. Unter Windows ist diese Funktion nicht definiert. Prüfe die Verfügbarkeit mit function_exists('posix_ctermid').

In Umgebungen ohne kontrollierendes Terminal (z. B. bei Daemon-Prozessen, in manchen Web-Server-Kontexten oder in Containern) kann die Funktion false zurückgeben oder einen Pfad liefern, der sich nicht öffnen lässt. Prüfe daher immer den Rückgabewert.