yocto-sumo源码解析: recvfds

Posted shortnil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yocto-sumo源码解析: recvfds相关的知识,希望对你有一定的参考价值。

def recvfds(sock, size):
        ‘‘‘Receive an array of fds over an AF_UNIX socket.‘‘‘
        a = array.array(i)                                                           #声明一个整型数组,itemsize
        bytes_size = a.itemsize * size                                                 #数组容量设置
        msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size))       #从套接字中读取数据到msg,ancdata,recvmsg函数是标准posix函数,可以参阅:http://pubs.opengroup.org/onlinepubs/009695399/functions/recvmsg.html
        if not msg and not ancdata:
            raise EOFError
        try:
            if len(ancdata) != 1:                                                      #对于接收到的附加数据,长度不为1个元组的情况下退出
                raise RuntimeError(received %d items of ancdata %
                                   len(ancdata))
            cmsg_level, cmsg_type, cmsg_data = ancdata[0]                              #从附加数据中提取(cmsg_level, cmsg_type, cmsg_data)元组
            if (cmsg_level == socket.SOL_SOCKET and
                cmsg_type == socket.SCM_RIGHTS):
                if len(cmsg_data) % a.itemsize != 0:
                    raise ValueError
                a.frombytes(cmsg_data)                                                 #从cmsg_data中提取fd到数组a
                assert len(a) % 256 == msg[0]
                return list(a)
        except (ValueError, IndexError):
            pass
        raise RuntimeError(Invalid data received)

 

以上是关于yocto-sumo源码解析: recvfds的主要内容,如果未能解决你的问题,请参考以下文章

yocto-sumo源码解析: setup_bitbake

yocto-sumo源码解析: ProcessServer.main

yocto-sumo源码解析: oe-buildenv-internal

yocto-sumo源码解析oe-setup-builddir

Vue3 源码解析:代码生成器

转spring源码解析