|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
|
Как отследить из проги на Си завершение другой проги16.01.2009, 13:32. Показов 5315. Ответов 12
Метки нет (Все метки)
Есть две программы, одна написана не мной и исходников нет (main),
вторую я пытаюсь написать сам для реализации ряда дополнительных функций (addon). После запуска стартуют обе программы. Мне необходимо добиться, что бы когда программа main завершается, следом завершалась и моя программа, т.е. сделать что-то типа периодической проверки работает ли программа main и как только программы main не станет среди процессов, тут же вызвать завершение программы addon. Подскажите, как это сделать? ![]() Добавлено через 3 часа 18 минут 57 секунд Ну помогите, пожалуйста!
0
|
|
| 16.01.2009, 13:32 | |
|
Ответы с готовыми решениями:
12
Как делаются проги в Линуксе ?
Установил фотошоп, вместо проги установились другие проги (игры онлайн,браузеры,рекламы и т.д.) |
|
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
|
|
| 16.01.2009, 21:29 | |
|
В твоей проге делаешь fork, в процессе - сыне(или отце,пофиг) запускаешь нужную прогу, в другом процессе вызываешь waitpid или что-либо из семейства вейтов
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
||
| 16.01.2009, 22:51 [ТС] | ||
|
Обрисую картину более подробно: есть устройство под управлением линукс, в качестве графической среды выступает PicoGui Server(аналог иксов в линукс) внутри этого сервера работает основная программа, разработанная производителем (она реализует менюшки и основные функции по работе с устройством). Таким образом процесс выглядит следующим образом: - включается устройство; -стартует линукс; -стартует PicoGui Server -стартует основная прога (main), которая подсоединяется к этому серверу; -затем стартует моя прога, она тоже подсоединяется к этому серверу; Проблема в следующем, когда устройство выключается, то сначала завершается работа основной программы, а затем завершается работа сервера, но сервер не может выключится, пока от него не отключится мое дополнение, мне нужно из моего дополнения как-то узнать, когда завершилась основная программа, что-бы следом реализовать выключение моей программы.
0
|
||
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
|
| 16.01.2009, 23:07 | |
|
Почитай http://citforum.univ.kiev.ua/p... x/signals/ в плане сигнала SIGTERM. Если я правильно помню - он посылается ОСью всем прогам при завершении ОСи.
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
|||||||
| 17.01.2009, 01:15 [ТС] | |||||||
|
оно переходит в режим стенбай, т.е. да основная программа и PicoGui server завершают работу, а вот сама операционная система не выключается, а соответственно она не посылает сигнала SIGTERM, а значит моей программе нечего ловить. Покопавшись в скриптах нашел вот такие строки:
Нельзя ли что-то подобное сделать из программы на си и если можно, то насколько это будет критично для нагрузки на процессор? Господа программисты, подскажите действенный вариант.
0
|
|||||||
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
||||||
| 17.01.2009, 12:14 | ||||||
Просто проверяй например раз в 100 мс наличие процесса.З.Ы. За исходник в этом его виде спасибо cnupm.
1
|
||||||
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
|
| 17.01.2009, 18:16 [ТС] | |
|
Кажется это мне подходит.
Спасибо. Буду пробовать.
0
|
|
|
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
| 17.01.2009, 18:52 | |
|
о жесть...
![]() А как вам способ включить, позыбзить в WinSight32 и использовать FindFindow(..)???
0
|
|
|
UNIX-way
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
|
|
| 17.01.2009, 19:16 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 12.02.2009
Сообщений: 11
|
|
| 12.02.2009, 08:08 | |
|
А что значит "стартует автоматом"? Найти, где стартует, и поставить там свою прожку (вариант - переименовать файл исходной программы и записать под его видом свою). Из своей (в сыновнем процессе) запустить вторую. Ну и waitpid где-то... :-)
Другой вариант, надо найти, как узнать об отключении "устройства" (по-моему лучшее). Третий вариант - внести исправления в задачу и задаться другой >:-)
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
||
| 12.02.2009, 09:29 [ТС] | ||
|
Та прога, что стартует автоматом - находится во внутреннем флэше рессивера в области для чтения вместе с скриптом ее запускающим, поэтому изменить оригинальную программу (переименовать или заменить) пока нельзя. Второй вариант тоже не совсем подходит: да я отслеживаю нажатие кнопки вкл/выкл., но устройство иногда включается и выключается от внутреннего таймера, т.е. кнопку на нем никто не нажимает, а отследить события таймера пока тоже не знаю как.
0
|
||
|
1 / 1 / 0
Регистрация: 12.02.2009
Сообщений: 11
|
|
| 13.02.2009, 19:25 | |
|
Некотороые возможности.
/sys/devices/ ... /power/state . Устройство полностью включено == там 0 (текстом). Файл устройства (типо /dev/receiver0, имя, скорее всего, другое). Наверное, есть какой-нибудь ioctl определения текущего состояния. Ну и /proc/... Там на каждую задачу по каталогу. Имя каталога - process id :-) Есть ссылка на исполняемый файл задачи: /proc/<process_id>/exe ... Значит, надо найти каталог с нужной программой и следить. (кстати, полезно сделать эти каталоги доступными только пользователю-владельцу, и даже невидимыми другим. По умолчанию чтение доступно для всех. У себя я лично изменил эту ситуацию (путём изменений в ядре)). Добавлено через 21 минуту 42 секунды Ещё программы, бывает, специально помечают, что они работают путём создания где-нибудь небольших файлов (типо lock). Они их могут проверять чтобы, скажем, узнать, не запущены ли они во второй раз :-) (это может быть где-нибудь в каталоге /var, или /tmp).
0
|
|
|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
|
| 14.02.2009, 12:57 [ТС] | |
|
Спасибо, буду пробовать.
Про power/state - каталог скрыт производителем или отсутствует. А proc вы имеете ввиду просматривать этот каталог на наличие нужной проги? Тогда наверное стоит делать некий цикл, который с периодичностью, например, раз в 1 секунду будет проверять каталог. Насколько такая периодическая проверка загрузит систему и как это реализовать программно?
0
|
|
| 14.02.2009, 12:57 | |
|
Помогаю со студенческими работами здесь
13
Как вызвать Dll из другой проги как запустить прогу из другой проги
Можно ли отследить работу portable проги на компе Как отследить завершение одного метода и по окончании его запустить другой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|