#linux #sockets #file-descriptor
#linux #сокеты #файловый дескриптор
Вопрос:
файловый дескриптор может передаваться от одного процесса к другому на одном хосте с использованием доменного сокета UNIX. может кто-нибудь, пожалуйста, сказать, есть ли способ передать файловый дескриптор между процессами на разных хостах??
Ответ №1:
Нет способа передать файловый дескриптор между процессами на разных хостах.
Причина в том, что дескриптор файла является ссылкой на структуру описания файла в ядре. Когда вы передаете файловый дескриптор другому процессу на том же хосте, этот процесс просто ссылается на то же самое существующее описание файла в ядре. Принимая во внимание, что это же описание файла не существует в ядре другого хоста.
Ответ №2:
Нет способа передать файловый дескриптор удаленному процессу. Как это могло быть? Файловый дескриптор ссылается на ресурс ввода-вывода, предоставляемый локальным компьютером (даже если это сетевой сокет, поскольку тогда сокет ссылается на сетевое соединение с участием локального компьютера), который может быть недоступен на удаленном хосте.
Ответ №3:
Файловый дескриптор — это, по сути, индекс в наборе таблиц на локальном компьютере, поэтому другой компьютер не может использовать тот же файловый дескриптор.