У меня есть приложение win32, и я запускаю дочерний процесс robocopy для передачи некоторых файлов. Если я завершу процесс с помощью TerminateProcess, есть ли возможность завершить его с поврежденными файлами? Если да, то как этого избежать?
Как безопасно убить процесс robocopy
Ответы (1)
Из функции TerminateProcess
Функция TerminateProcess используется для безусловного завершения процесса. Состояние глобальных данных, поддерживаемых библиотеками динамической компоновки (DLL), может быть скомпрометировано, если используется TerminateProcess, а не ExitProcess.
Имейте в виду, что TerminateProcess
не позволяет своей цели очиститься и выйти в допустимом состоянии.
Попробуйте закрыть процесс чисто, перейдите по ссылке ниже,
Если процесс robocopy прерван, копируемый файл будет иметь отметку времени (a) 1980-01-01 (b) того же размера, что и исходный файл.
Затем используйте robocopy, чтобы снова скопировать файлы с TimeStamp в командной строке.
См.: Как использовать Robocopy для копирования файлы с отметкой времени в командной строке
person
Strive Sun
schedule
26.03.2021
TerminateProcess
должен быть последней попыткой сделать это. - person Andy   schedule 25.03.2021