Неужели ребёнок с вилочкой всегда получит тот же самый идентификатор файла, что и идентификатор файла родителя?

Если у вас низкая пропускная способность, я рекомендую сжатие видеопотока:

ssh USER@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska

, где

  • -an отключает кодирование звука. Если вам нужен звук, замените -an на -f alsa -ac 1 -i hw: 3 (где hw: 3 также может быть hw: 0 или hw: 1,… См. arecord -l для вашего устройства).Если вам нужен только звук (без видео), используйте это )
  • -s 640x480 - размер вашего видео в измерениях x и y
  • -r 10 - это размер частота кадров, которую вы хотите получить (чем ниже, тем лучше изображение с низким битрейтом, но выглядит более неуклюже)
  • -b: v 500k - битрейт 500 килобит / с

Вам нужен ffmpeg на удаленном хосте и mplayer на локальной машине установлен.

0
10.12.2018, 20:10
2 ответа

Да, все идентификаторы открытых файлов копируются в дочерние при разветвлении.

См. ручная вилка

The child inherits copies of the parent's set of open file descriptors. Each file descriptor in the child refers to the same open file description (see open(2)) as the corresponding file descriptor in the parent. This means that the two descriptors share open file status flags, current file offset, and signal-driven I/O attributes (see the description of F_SETOWN and F_SETSIG in fcntl(2)).

0
28.01.2020, 04:07

Успешный вызов openвозвращает наименьшее число в качестве файлового дескриптора, который еще не используется.

Таким образом, если openвозвращает 4, это означает, что файловые дескрипторы 0 -3 уже используются. Поскольку forkдает те же файловые дескрипторы дочернему элементу, у дочернего элемента также будет использоваться fd 0 -3 и свободный fd 4, поэтому два успешных вызова openв родительском и дочернем элементах сразу после forkвернет тот же номер. Но если родитель или дочерний элемент открывали или закрывали файлы после fork, числа могут быть другими.

В общем, вы не должны полагаться на предсказание fd вызова open, если только у вас нет веских причин и вы не уверены, что можете предсказать его правильно.

0
28.01.2020, 04:07

Теги

Похожие вопросы