//go:build linux package sockets import ( "io" "golang.org/x/sys/unix" ) type monitor struct { fd int closed bool } func (m *monitor) Read(p []byte) (int, error) { n, err := unix.Read(m.fd, p) if m.closed { return 0, io.EOF } return n, err } func (m *monitor) Close() error { if m.closed { return nil } m.closed = true return unix.Close(m.fd) }