Exec () Создание двух разных процессов для FFMPEG - PullRequest
0 голосов
/ 23 мая 2018

Я запускаю эту команду в exec (), и она создает два процесса FFMPEG, один одновременно с другим, но с другим PID.Это нормальное поведение?Когда я запускаю код непосредственно в shell, этого не происходит.

$ffmpeg = "/home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4 1> log.txt  2>&1";

    exec($ffmpeg, $output, $var);

Пример двух созданных процессов

user+ 24414 24413  0 13:42 pts/2    00:00:00 sh -c /home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4 1> log.txt  2>&1
user+ 24415 24414  1 13:42 pts/2    00:00:00 /home/user/bin/ffmpeg -hide_banner -loglevel verbose -n -i https://sitelink/list.m3u8 -map 0:4 -map 0:5 -acodec copy -bsf:a aac_adtstoasc -vcodec copy video.mp4

1 Ответ

0 голосов
/ 24 мая 2018

Да, это нормально.exec() выполняет команду как команду оболочки, поэтому он должен создать процесс sh.Затем оболочка запускает дочерний процесс для запуска программы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...