Я пытаюсь выполнить обновление прошивки, когда мои программы запущены в inittab. Моя программа будет запускать 2 команды. Один для извлечения сценария установщика из архива, а другой для выполнения сценария установщика. В моем коде я использую вызов функции system (). Это 2 строки команд ниже,
system ( "tar zvxf tarball.tar.gz -C / installer.sh 2>&1" );
system( "nohup installer.sh tarball >/dev/null 2>&1 &" );
Скрипт установщика требует, чтобы tarball был аргументом. Я пытался использовать sudo, но у меня все та же проблема. Я попробовал nohup безуспешно. Сценарий установщика должен убить мою программу при обновлении прошивки, но сценарий установщика останется в живых.
Если моя программа запускается из командной строки или rc.local, на целевом устройстве мое обновление работает нормально, то есть, когда моя программа убита, мой установочный скрипт продолжается.
Но мне нужно запустить мою программу из / etc / inittab, чтобы она могла возродиться, если умрет. Чтобы остановить мою программу в inittab, скрипт установщика хеширует ее и выполняет «telinit q». Это где моя программа умирает (но это то, что я хочу, чтобы она делала), но это также убивает мой установочный скрипт.
Кто-нибудь знает, почему это происходит и что я могу сделать, чтобы решить эту проблему?
Заранее спасибо.