Проверить запущен ли процесс.
Модератор: Модераторы
Проверить запущен ли процесс.
Один процесс должен проверить запущен ли другой, оба на фрипаскале, проверять наличи .pid файла не вариант. Может как-то через процессное взаимодействие? типа сделал запрос процессу, он ответил - значит работает.
- alexs
- долгожитель
- Сообщения: 4067
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
TCP/IP сервер? и клиент к нему? заем так сложно
просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.
просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Поиск по форуму теперь не в почете =(
http://freepascal.ru/forum/viewtopic.php?t=2159&highlight=%EF%F0%EE%F6%E5%F1%F1
http://freepascal.ru/forum/viewtopic.php?t=2159&highlight=%EF%F0%EE%F6%E5%F1%F1
alexs писал(а):TCP/IP сервер? и клиент к нему?
да нет, там же всякие межпроцессные взаимодействия есть
alexs писал(а):просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.
а если демон мой упадет, он перестанет блокировать файл? А то вся загвозда в том, что демон иногда падает, еще не все баги вычистил, а пид файл при этом остается, другому процессу нужно точно знать, что пид файл не просто так лежит, а демон реально запущен.
П.С. а как монопольно заблокировтаь файл? какой функцией?
- alexs
- долгожитель
- Сообщения: 4067
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
metallic писал(а):А то вся загвозда в том, что демон иногда падает, еще не все баги вычистил, а пид файл при этом остается, другому процессу нужно точно знать, что пид файл не просто так лежит, а демон реально запущен.
Внимательно читаем собощение.
Ты при старте проверяеш возможность монопольного создания/перезаписи файла. Если демон второй экземпляр работает - файл не создаш. Если упал - то хоть файл и есть, но ты его перетрёш и создаш монопольно.
alexs писал(а):просто во временной папке создаёш в монопольном доступе при запуске программы файл и всё. Следующий процес при старте проверяет наличие этого файла и возможность его создания/перезаписи. Если файл существует и перезапись не удалась - процес запущен. Если же файла нет или файл можно пересоздать монопольно - превыдущей копии процесса нет.
Насколько я понимаю речь шла о Linux...
А не подскажите как создать "залоченный" файл и/или проверить "возможность его создания/перезаписи"
просто у меня
FileCreate(FileName, fmShareExclusive/fmShareCompat) и FileOpen(...)
не выдают никаких ошибок а возвращают новый handle
