Próbuję określić, w skrypcie Perla w systemie Linux, czy działa w terminalu.Jak sprawdzić, czy skrypt Perl działa w terminalu?
Oznacza to, że muszę kod:
- zwraca true gdy po prostu działa na linii poleceń
- zwraca również prawdą, gdy uruchomiony
./myscript.pl | less
lub nawet./myscript.pl </dev/null >/dev/null 2>/dev/null
- zwraca false gdy uruchomiony w cron albo jako skrypt CGI
Szczególnie z powodu drugiego pocisku nie mogę używać -t STDOUT
i odmian, a także IO::Interactive jest bezużyteczny.
Informacja wydaje się być dostępna. Jeśli uruchomię ps
, to pojawi się wpis taki jak pts/2
w kolumnie , nawet jeśli uruchomię ./myscript.pl </dev/null >/dev/null 2>/dev/null
i ?
podczas uruchamiania jako zadanie cron lub skrypt CGI.
Czy istnieje elegancki sposób na określenie tego w skrypcie Perla? Wolałbym nie analizować danych wyjściowych z ps
.
Myślę, że perl ma dostępną funkcję 'isatty (3)'. – Keith
'isatty' istnieje w module POSIX, tak, ale, podobnie jak' -t', sprawdza, czy uchwyt pliku jest podłączony do tty. Nie to, czego potrzebuję ... – mscha
Czy dostępna jest funkcja [ctermid] (http://pubs.opengroup.org/onlinepubs/009695399/functions/ctermid.html)? – Keith