Ivanovo Linux Users Group -  
Форум Помощь Поиск Вход
Предыдущая Следующая Вверх Тема Софт / Программное обеспечение / PERL (7006 хитов)
- Написал(а) Dimidrol Дата 26.03.04 10:29
Хочу считать текущее системное время для дальнейшей обработки в программе.
Пишу в скрипте:
     $time = system(clock);
     print "time = $time \n";

В результате выдает следующее:
     Fri Mar 26 12:00:00 2004
     time = 0

Подскажите что надо сделать, чтобы переменной "time" присваивалось значение "Fri Mar 26 12:00:00 2004".
Parent Написал(а) LOE (Site/forum admin) Дата 26.03.04 13:04
Ндя
А зачем использовать вызов system?
В перле в самом всё есть:
perldoc -f time
perldoc -f localtime
В последнем есть примеры как получить нужный формат используя use POSIX qw(strftime);
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Dimidrol Дата 31.03.04 11:07
Почему при вызове из скрипта:
     kill(962);
  удаление процесса не происходит, тогда как при вызове из командной строки:
     kill 962
  все нормально.
Parent - Написал(а) LOE (Site/forum admin) Дата 31.03.04 11:47 Отредактировано 31.03.04 11:48
Читаем документацию:
perldoc -f kill

       kill SIGNAL, LIST
               Sends a signal to a list of processes.  Returns
               the number of processes successfully signaled
               (which is not necessarily the same as the number
               actually killed).

Формат команды виден? Возвращаемое значение видно?

PS. неужели так трудно доку почитать? ;-)
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Dimidrol Дата 31.03.04 12:17
Формат конечно понятен. Только не понятно, что в качестве LIST использовать. В качестве SIGNAL (если я правильно понял) номер процесса надо указывать.

P.S.
Как раз справку читаем в первую очередь. Просто иногда сложно разобраться (для меня по крайней мере).
Parent - Написал(а) LOE (Site/forum admin) Дата 01.04.04 07:49 Отредактировано 01.04.04 07:50
Надо взять англо-русский словарик и перевести.
               Sends a signal to a list of processes.  Returns
               the number of processes successfully signaled
               (which is not necessarily the same as the number
               actually killed).
или:
              Послать сигнал списку процессов. Возвратит
              число процессов, благополучно "осигналенных" :-)
              (это не обязательно то-же, что и число убитых на самом деле)

SIGNAL - это код посылаемого сигнала
LIST - список процессов, которым этот сигнал послать.
Ну ведь даже по названиям ясно!

PS. или плохо читаем справку, или с английским вообще не дружим.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Dimidrol Дата 01.04.04 12:16
Все. Проблема решена.
Правда так я и не получил ответа, что код сигнала для уничтожения процесса SIGNAL=9 (это наверное я должен быть знать сам к своему стыду).
Спасибо.

P.S.
Все-таки  проще мне кажется сразу было ответить:
   kill 9, 962;
Parent Написал(а) LOE (Site/forum admin) Дата 01.04.04 18:04
Не проще.
Посуди, если тебе дать сразу ответ, ты и выяснять деталей не будешь, а значит ничего не запомнишь.
В данном случае, тебе все-же пришлось немного раскинуть мозгами, а значит это надолго запомнится :-)

На счет SIGNAL=9, да, это _должно_ быть известно тому, кто работает с юниксом.
В плане дальнейших изысканий:
kill -l (команда в шелле, не в перле)
less /usr/include/asm/signal.h
"No! Try not! Do. Or do not. There is no try." -- Yoda
Предыдущая Следующая Вверх Тема Софт / Программное обеспечение / PERL (7006 хитов)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.294s with 11 database queries.