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

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

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

Ответить
metallic
незнакомец
Сообщения: 9
Зарегистрирован: 24.11.2006 16:20:07

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

Сообщение metallic »

Один процесс должен проверить запущен ли другой, оба на фрипаскале, проверять наличи .pid файла не вариант. Может как-то через процессное взаимодействие? типа сделал запрос процессу, он ответил - значит работает.
Аватара пользователя
alexs
долгожитель
Сообщения: 4067
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Сообщение Padre_Mortius »

Поиск по форуму теперь не в почете =(
http://freepascal.ru/forum/viewtopic.php?t=2159&highlight=%EF%F0%EE%F6%E5%F1%F1
metallic
незнакомец
Сообщения: 9
Зарегистрирован: 24.11.2006 16:20:07

Сообщение metallic »

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

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

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

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

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

Сообщение Attid »

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

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

Сообщение Attid »

metallic
ясно, читай ссылку что Padre_Mortius дал.
metallic
незнакомец
Сообщения: 9
Зарегистрирован: 24.11.2006 16:20:07

Сообщение metallic »

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

прочел, что со своими программами делать понятно, осталось придумать как тоже самое с чужими делать, надо будет еще mysql проверять, запущен ли
Аватара пользователя
alexs
долгожитель
Сообщения: 4067
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Внимательно читаем собощение.
Ты при старте проверяеш возможность монопольного создания/перезаписи файла. Если демон второй экземпляр работает - файл не создаш. Если упал - то хоть файл и есть, но ты его перетрёш и создаш монопольно.
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

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

мой первый ответ
третья строчка
metallic
незнакомец
Сообщения: 9
Зарегистрирован: 24.11.2006 16:20:07

Сообщение metallic »

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

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

ды понятно, но мне кажется искать в выводе комманды ps -ax как-то не красиво, не профессионально что ли? или ничего страшного? не зачмырят за такой код? :)
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

не должны =) как вариант в /proc копаться. или глянь исходники ps =) тут ничего не нашел по этому поводу =/
trifon
постоялец
Сообщения: 135
Зарегистрирован: 24.12.2006 11:08:35

Сообщение trifon »

Можно mysql по сокету определять, указать программе путь к сокету и все.
The Chase
новенький
Сообщения: 13
Зарегистрирован: 04.10.2007 15:58:22

Сообщение The Chase »

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


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

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

просто у меня
FileCreate(FileName, fmShareExclusive/fmShareCompat) и FileOpen(...)
не выдают никаких ошибок а возвращают новый handle
Ответить