Мне нужно повторно запустить процесс повторно (отдельно). Хотел узнать, есть ли что-нибудь, что я могу сделать, чтобы избежать полного exec. Где происходит инициализация инициализированного и неинициализированного сегмента данных? Это происходит в пространстве ядра или в libc или в загрузчике? Есть ли что-нибудь, что я могу сделать, чтобы использовать тот факт, что это один и тот же двоичный файл (как исполняемый двоичный файл), который я выполняю каждый раз?Перезапуск процесса оптимизации
ответ
Я не знаю, если это то, что вы хотите - «повторное повторение самостоятельно» меньше, чем ясно - но exec
достаточно легко избежать.
Поскольку вы уже находитесь в образе программы, который хотите перезапустить, вам нужно только fork
новых копий. У вас может быть главная копия, чья ответственность состоит в том, чтобы развить детей и позволить детям запустить фактический программный код, который представляет собой реальную функциональность. Что-то вроде:
while ((! done)
{
//wait on signal, fifo, socket, whatever
if (somethingSaysWeAreDone)
exit(0);
if (fork == 0)
break;
}
//children execute the rest of the program
Каждый ребенок имеет чистый сланец, кроме одной или двух переменных, над которым они никогда не должны в любом случае сегментов. Я не вижу никакого способа избежать вилки, хотя, очевидно, вам нужен какой-то механизм для связи с «основной» копией, которую он должен воспроизводить.
Если бы у них был доступ к источнику, не могли ли они просто поместить все в цикл и назвать это днем? Я предполагал, что у них не было источника. Или я вас не понимаю? –
@ Matthew Adams, я не мог определить, к чему OP имеет доступ. Я воспользовался «или изменением кода пользовательского пространства», поскольку он имел источник, но, возможно, это не то, что он имел в виду. Если нет, игнорируйте. Без вреда. – Duck
Ох. Не пытался быть критичным, просто немного смутился. –
- 1. Перезапуск процесса Node.js
- 2. Получение родительского процесса/Перезапуск процесса C#
- 3. Перезапуск результатов процесса не читается
- 4. Windows XP - контроль процесса и перезапуск процесса, если он сбой
- 5. Как определить, что вызывает перезапуск процесса w3wp
- 6. php перезапуск процесса в фоновом режиме spamassassin
- 7. Запросить перезапуск процесса для административных привилегий
- 8. Перезапуск процесса ffmpeg с использованием monit
- 9. Стратегии оптимизации рабочего процесса из нескольких приложений
- 10. дизайн оптимизации при выполнении внешнего процесса звонков
- 11. Правильная остановка, ожидание и перезапуск процесса node.js heroku
- 12. Мониторинг и перезапуск долговременного PHP-процесса (Ratchet) в разработке
- 13. AWS SWF Перезапуск рабочего процесса при определенных условиях
- 14. Автоматический перезапуск процесса C++, прикрепленного к серверу wamp
- 15. Как предотвратить перезапуск процесса node.js при изменении топологии Azure
- 16. SharePoint, рабочий процесс и веб-службы - перезапуск рабочего процесса
- 17. не Использование До перезапуск процесса, когда он умирает
- 18. Перезапуск процесса/команды после интервала после его последнего завершения
- 19. Перезапуск метода
- 20. Снимок и перезапуск Cassandra
- 21. Webpack - шаг оптимизации выключения во время процесса сборки. Производительность Ускорение
- 22. Совершенствование рабочего процесса Git и оптимизации для PHP [Magento]
- 23. C алгоритм оптимизации оптимизации
- 24. Предложение оптимизации оптимизации Mysql
- 25. Помощь в оптимизации оптимизации
- 26. Пример оптимизации оптимизации CUDA
- 27. Радиус оптимизации оптимизации хвоста
- 28. NSTimer Перезапуск
- 29. перезапуск таймера
- 30. Перезапуск запроса
Я бы предпочел решение, которое позволяет избежать изменения ядра, предпочтительно с использованием LD_PRELOAD или изменения кода пользовательского пространства. но если это невозможно, любое решение для изменения ядра также будет очень полезно знать. – melchi