Блокировки Posix (F_SETLK и т.д.) связаны с процессом, поэтому после dup2()
у вас остается только одна блокировка на файл. Вы можете перечислить свои блокировки с помощью lslocks
.
Если вы закроете один из двух fds, вы сбросите блокировку. Если вы измените блокировку одного из fds, другой тоже изменится. После fork()
у ребенка нет блокировок. Подробности см. на странице fcntl
man. Эта спецификация Posix говорит, что dup2()
будет разделять любые блокировки.
Вы можете делать простые тесты в Python, используя lockf()
для простоты использования, так как он реализован через fcntl()
, например:
#!/usr/bin/python
import os, fcntl
pid = os.getpid()
fd = open("/tmp/try","rw")
fcntl.lockf(fd,fcntl.LOCK_SH,10)
fd2 = os.dup(fd.fileno())
os.system("lslocks -p %d" % pid) # one lock
fd.close()
os.system("lslocks -p %d" % pid) # no output
Пакет openssl
содержит внешний двоичный файл, а не библиотеку. Вы отслеживаете Jessie для этого пакета (с его обновлениями безопасности).
Сама библиотека - libssl1.0.0
, и вы отслеживаете бэкпорты Jessie для этого пакета (наряду с Nginx; для последнего вы отстаете всего на несколько версий). Это то, что использует Nginx, и это версия библиотеки, определяемая openssl
front-end. Вы можете узнать версию библиотеки в вашей системе с помощью
apt-cache policy libssl1.0.0
(а также о наличии более новых версий, если таковые имеются).
Я подозреваю, что nginx -V
показывает, какая версия openssl использовалась для сборки ядра, и что он также показывает вам версию в системе, которую он использует.