Как мне проверить, работает ли сценарий Perl в терминале?

Я пытаюсь определить в сценарии Perl в Linux, работает ли он в терминале.

То есть мне нужен код, который:

  • возвращает истину при простом запуске в командной строке
  • также возвращает истину при запуске ./ myscript.pl | less или даже ./ myscript.pl dev / null> / dev / null 2> / dev / null
  • возвращает false при выполнении в задании cron или в виде сценария CGI

Особенно из-за второй пули я не могу использовать -t STDOUT и его варианты, а также IO :: Interactive бесполезен.

Информация действительно кажется имеется в наличии. Если я запустил ps , он покажет запись типа pts / 2 в столбце TTY , даже когда я запустил ./ myscript.pl dev / null> / dev / null 2> / dev / null и ? при запуске в качестве задания cron или сценария CGI.

Есть ли элегантный способ определить это в Perl сценарий?Я бы предпочел не анализировать вывод ps .

9
задан mscha 5 August 2011 в 10:56
поделиться