| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > console vs process |
| Автор: BitCat 10.7.2006, 16:26 |
| Есть скрипт x.pl. Нужно сделать такую вещь: +)если этот x.pl запускался с консоли терминала (./x.pl), то выдать на экран 'TERMINAL' +)если x.pl запускался из другого скрипта-процесса, то на консоль ничего выдавать не надо. Вопрос: как узнать, откуда запущен скрипт - из консоли или из левого процесса через какой-нить exec/system/`` ? |
| Автор: sharq 11.7.2006, 11:38 |
| BitCat, скрипту все равно кто его запустил на выполнение. Если тебе это так важно могу посоветовать, в каком-нить случае передавать через @ARGV откуда он был запущен и анализировать это. Хотя если это дочерний процесс, то через вызов системной утилиты (ps) можно узнать кто его вызвал, но это сложно и не нужно |
| Автор: BitCat 11.7.2006, 13:54 | ||
на Solaris пашет. под Redhat и FreeBSD - неа.. да и вообще ключ $ENV{'_'} какой-то очень специфический. в общем жутко не переносимое решение. до другого пока не додумался... млин.. |
| Автор: DiverD 11.7.2006, 20:27 | ||
А почему сложно? вот : ps aux|grep name_script |
| Автор: BitCat 12.7.2006, 09:40 | ||
| > через вызов системной утилиты (ps) можно узнать кто его вызвал Не сложно вызвать системную утилиту и распарсить её ответ, но всегда следует избегать вызова подобных вещей. Зачем вызывать внешнюю прогу, если можно написать это самому, без привязки к какой-либо утилите и ее ответу (мало ли что там дальше разработчики этой тулзы наворотят - может и ответ ее вообще не такой будет, а может из поставки ее исключат). В общем, вот такая получилась функция:
|