Процесс завершается, когда я вызываю system () с wait = FALSE - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь обработать видео на OpenCPU, и потому что они очень большие, я хочу вызвать процесс "FFmpeg" с помощью "system" и позволить ему продолжать работать, пока он не будет завершен. Но мне нужно получить временный «каталог файлов», созданный OpenCPU, чтобы я мог тянуть этот каталог, пока не будет выполнено преобразование видео. Для этого я вызываю системную функцию с параметром wait = FALSE, как показано ниже

Это прекрасно работает, если я использую библиотеку (opencpu) на своем компьютере, но когда я перемещаю это в производственную среду ( Ubuntu 14.x) системный вызов прерывается сразу после запуска.

Это можно исправить с помощью opencpu.confg? Или это ошибка?

ffmpeg_exe <- "/usr/bin/ffmpeg" # Linux path

exec_convert <- paste0("( ",ffmpeg_exe,' -i ',input_file,' ',convert_command,' ',output_file, ' 2> PROCESS_OUTPUT.txt ;  ls > PROCESS_DONE.txt ',")")

system(exec_convert, wait=FALSE)

1 Ответ

0 голосов
/ 27 апреля 2020

Я только что узнал, что на linux OpenCPU не допускает такого поведения, он убивает все дочерние процессы при возврате запроса. Это специально. Он не хочет, чтобы потерянные процессы могли работать вечно на сервере, opencpu не предназначен для этой цели.

...