передача файлового дескриптора через интернет-сокет

#linux #sockets #file-descriptor

#linux #сокеты #файловый дескриптор

Вопрос:

файловый дескриптор может передаваться от одного процесса к другому на одном хосте с использованием доменного сокета UNIX. может кто-нибудь, пожалуйста, сказать, есть ли способ передать файловый дескриптор между процессами на разных хостах??

Ответ №1:

Нет способа передать файловый дескриптор между процессами на разных хостах.

Причина в том, что дескриптор файла является ссылкой на структуру описания файла в ядре. Когда вы передаете файловый дескриптор другому процессу на том же хосте, этот процесс просто ссылается на то же самое существующее описание файла в ядре. Принимая во внимание, что это же описание файла не существует в ядре другого хоста.

Ответ №2:

Нет способа передать файловый дескриптор удаленному процессу. Как это могло быть? Файловый дескриптор ссылается на ресурс ввода-вывода, предоставляемый локальным компьютером (даже если это сетевой сокет, поскольку тогда сокет ссылается на сетевое соединение с участием локального компьютера), который может быть недоступен на удаленном хосте.

Ответ №3:

Файловый дескриптор — это, по сути, индекс в наборе таблиц на локальном компьютере, поэтому другой компьютер не может использовать тот же файловый дескриптор.