|
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 35
|
|
Как отследить из проги на Си завершение другой проги16.01.2009, 13:32. Показов 5240. Ответов 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 проги на компе Как отследить завершение одного метода и по окончании его запустить другой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|