Возможно ли форсировать изменение запущенного объекта в файловой системе? Вопрос в том, возможно ли простым методом изменить файл запущенного процесса из самого процесса? При использовании ofstream, получаю такой вывод. Got an error openning self: `Text file busy` Попробовал кодint fd; fd = open (GlobalFilesystemPathToRunningObject.c_str(), O_RDONLY); std::cout << fd << std::endl; std::cout << flock(fd, LOCK_UN) << std::endl; std::cout << open (GlobalFilesystemPathToRunningObject.c_str(), O_RDWR) << std::endl; std::ofstream file(GlobalFilesystemPathToRunningObject.c_str(), std::ios_base::app); if (file.fail()) std::cout << "Got an error openning self: `" << std::strerror(errno) << "`" << std::endl; { file <

3 Авг 2021 в 20:04
230 +1
0
Ответы
1

Нет, нельзя простым методом изменить файл запущенного процесса из самого процесса. Когда процесс открывает файл для записи, операционная система блокирует его для других процессов, чтобы избежать конфликтов. Поэтому вам не удастся изменить файл, который уже открыт на запись вашим процессом.

Вы можете попробовать изменить файл, открыв его с использованием специальных флагов, например O_RDONLY и O_RDWR. Однако в вашем примере вы пытаетесь сделать это в самом процессе, который уже открыл файл на запись, поэтому получаете ошибку "Text file busy".

Чтобы изменить файл, запущенный процесс, вам нужно использовать другой процесс или способ, например, завершить процесс, изменить файл и заново запустить процесс.

17 Апр 2024 в 13:43
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир