Создавая канал с использованием сокетов домена unix, зачем отсоединять сокеты?

#python #sockets #networking

Вопрос:

Этот фрагмент кода, скопированный из multiprocessing.connection , создает сокеты PIPE через домен Unix с использованием os.socketpair() . Какова цель этого s1.detach() здесь? Я проверил документ Python на наличие socket.detach функции, но все еще не понимаю, как здесь используется функция. Кто-нибудь поможет объяснить?

 import socket
from multiprocessing.connection import Connection

def Pipe(duplex=True):
    '''
    Returns pair of connection objects at either end of a pipe
    '''
    if duplex:
        s1, s2 = socket.socketpair()
        s1.setblocking(True)
        s2.setblocking(True)
        c1 = Connection(s1.detach())
        c2 = Connection(s2.detach())
    else:
        fd1, fd2 = os.pipe()
        c1 = Connection(fd1, writable=False)
        c2 = Connection(fd2, readable=False)

    return c1, c2