Quando você compartilha um descritor de arquivo em um soquete, o kernel faz a mediação. Você precisa preparar os dados usando as macros cmsg(3)
, enviá-las usando sendmsg(2)
e receba-o usando recvmsg(2)
. O kernel está envolvido nas duas últimas operações e manipula a conversão de um descritor de arquivo para qualquer dado necessário para transmitir o descritor de arquivo e disponibilizar o descritor de arquivo no processo de recebimento.
Como pode o mesmo fd em diferentes processos apontar para o mesmo arquivo? fornece informações úteis. O processo de envio envia um descritor de arquivo que significa algo em relação à sua tabela de descritores de arquivos (privados); o kernel sabe o que é mapeado na tabela de arquivos abertos do sistema e cria uma nova entrada, conforme necessário, na tabela do descritor de arquivos do processo de recebimento.