Проверить запущен ли процесс.

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Проверить запущен ли процесс.

Сообщение metallic » 25.02.2008 01:01:04

Один процесс должен проверить запущен ли другой, оба на фрипаскале, проверять наличи .pid файла не вариант. Может как-то через процессное взаимодействие? типа сделал запрос процессу, он ответил - значит работает.
metallic
незнакомец
 
Сообщения: 9
Зарегистрирован: 24.11.2006 17:20:07

Сообщение alexs » 25.02.2008 01:11:16

TCP/IP сервер? и клиент к нему? заем так сложно
просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Padre_Mortius » 25.02.2008 01:16:37

Поиск по форуму теперь не в почете =(
http://freepascal.ru/forum/viewtopic.php?t=2159&highlight=%EF%F0%EE%F6%E5%F1%F1
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение metallic » 25.02.2008 12:07:02

alexs писал(а):TCP/IP сервер? и клиент к нему?

да нет, там же всякие межпроцессные взаимодействия есть

alexs писал(а):просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.

а если демон мой упадет, он перестанет блокировать файл? А то вся загвозда в том, что демон иногда падает, еще не все баги вычистил, а пид файл при этом остается, другому процессу нужно точно знать, что пид файл не просто так лежит, а демон реально запущен.

П.С. а как монопольно заблокировтаь файл? какой функцией?
metallic
незнакомец
 
Сообщения: 9
Зарегистрирован: 24.11.2006 17:20:07

Сообщение Attid » 25.02.2008 12:13:46

что имеет ввиду автор еще не понятно . может 2 разных программа.
и ОС тоже не понятна.
если линь то через запуск ps ax можно или findfist в /proc
если винда то через апи, делал когда-то искать лень.

хотя если оба программ свои то вариант Алекса прикрутить можно
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Attid » 25.02.2008 12:15:09

metallic
ясно, читай ссылку что Padre_Mortius дал.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение metallic » 25.02.2008 12:17:16

Attid писал(а):metallic
ясно, читай ссылку что Padre_Mortius дал.

прочел, что со своими программами делать понятно, осталось придумать как тоже самое с чужими делать, надо будет еще mysql проверять, запущен ли
metallic
незнакомец
 
Сообщения: 9
Зарегистрирован: 24.11.2006 17:20:07

Сообщение alexs » 25.02.2008 19:39:00

metallic писал(а):А то вся загвозда в том, что демон иногда падает, еще не все баги вычистил, а пид файл при этом остается, другому процессу нужно точно знать, что пид файл не просто так лежит, а демон реально запущен.

Внимательно читаем собощение.
Ты при старте проверяеш возможность монопольного создания/перезаписи файла. Если демон второй экземпляр работает - файл не создаш. Если упал - то хоть файл и есть, но ты его перетрёш и создаш монопольно.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Attid » 25.02.2008 20:29:51

надо будет еще mysql проверять, запущен ли

мой первый ответ
третья строчка
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение metallic » 25.02.2008 23:34:24

Attid писал(а):
надо будет еще mysql проверять, запущен ли

мой первый ответ
третья строчка

ды понятно, но мне кажется искать в выводе комманды ps -ax как-то не красиво, не профессионально что ли? или ничего страшного? не зачмырят за такой код? :)
metallic
незнакомец
 
Сообщения: 9
Зарегистрирован: 24.11.2006 17:20:07

Сообщение Attid » 26.02.2008 00:03:49

не должны =) как вариант в /proc копаться. или глянь исходники ps =) тут ничего не нашел по этому поводу =/
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение trifon » 26.02.2008 00:22:32

Можно mysql по сокету определять, указать программе путь к сокету и все.
trifon
постоялец
 
Сообщения: 135
Зарегистрирован: 24.12.2006 12:08:35

Сообщение The Chase » 20.03.2008 18:24:16

alexs писал(а):просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.


Насколько я понимаю речь шла о Linux...

А не подскажите как создать "залоченный" файл и/или проверить "возможность его создания/перезаписи"

просто у меня
FileCreate(FileName, fmShareExclusive/fmShareCompat) и FileOpen(...)
не выдают никаких ошибок а возвращают новый handle
The Chase
новенький
 
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru