Read information about currently pending signals.

        :param maxsignals:
            Maximum number of signals to read. By default this is the same
            as the number of signals registered with this signalfd.
        :returns:
            A list of signalfd_siginfo object with information about most
            recently read signals. This list may be empty (in non-blocking
            mode).
        :raises ValueError:
            If :meth:`closed()` is True

        Read up to maxsignals recent pending singals ouf of the set of signals
        being monitored by this signalfd. If there are no signals yet and
        SFD_NONBLOCK was not passed to flags in :meth:`__init__()` then this
        call blocks until such signal is ready.

def read(self, maxsignals=None):
        """
        Read information about currently pending signals.

        :param maxsignals:
            Maximum number of signals to read. By default this is the same
            as the number of signals registered with this signalfd.
        :returns:
            A list of signalfd_siginfo object with information about most
            recently read signals. This list may be empty (in non-blocking
            mode).
        :raises ValueError:
            If :meth:`closed()` is True

        Read up to maxsignals recent pending singals ouf of the set of signals
        being monitored by this signalfd. If there are no signals yet and
        SFD_NONBLOCK was not passed to flags in :meth:`__init__()` then this
        call blocks until such signal is ready.
        """
        if maxsignals is None:
            maxsignals = len(self._signals)
        if maxsignals <= 0:
            raise ValueError("maxsignals must be greater than 0")
        info_list = (signalfd_siginfo * maxsignals)()
        num_read = read(self._sfd, byref(info_list), sizeof(info_list))
        return info_list[:num_read // sizeof(signalfd_siginfo)]