docs: @Override
     public void registerProcess(LinuxProcess process)
     {
        if (shutdown) {
           return;
        }
  
        int stdinFd = Integer.MIN_VALUE;
        int stdoutFd = Integer.MIN_VALUE;
        int stderrFd = Integer.MIN_VALUE;
        try {
           stdinFd = process.getStdin().acquire();
           stdoutFd = process.getStdout().acquire();
           stderrFd = process.getStderr().acquire();
  
           pidToProcessMap.put(process.getPid(), process);
           fildesToProcessMap.put(stdinFd, process);
           fildesToProcessMap.put(stdoutFd, process);
           fildesToProcessMap.put(stderrFd, process);
  
           try {
              EpollEvent event = eventPool.take();
              event.setEvents(LibEpoll.EPOLLIN);
              event.setFileDescriptor(stdoutFd);
              int rc = LibEpoll.epoll_ctl(epoll, LibEpoll.EPOLL_CTL_ADD, stdoutFd, event.getPointer());
              if (rc == -1) {
                 rc = Native.getLastError();
                 eventPool.put(event);
                 throw new RuntimeException("Unable to register new events to epoll, errorcode: " + rc);
              }
              eventPool.put(event);
  
              event = eventPool.take();
              event.setEvents(LibEpoll.EPOLLIN);
              event.setFileDescriptor(stderrFd);
              rc = LibEpoll.epoll_ctl(epoll, LibEpoll.EPOLL_CTL_ADD, stderrFd, event.getPointer());
              if (rc == -1) {
                 rc = Native.getLastError();
                 eventPool.put(event);
                 throw new RuntimeException("Unable to register new events to epoll, errorcode: " + rc);
              }
              eventPool.put(event);
           }
           catch (InterruptedException ie) {
              throw new RuntimeException(ie);
           }
        }
        finally {
           if (stdinFd != Integer.MIN_VALUE) {
              process.getStdin().release();
           }
           if (stdoutFd != Integer.MIN_VALUE) {
              process.getStdout().release();
           }
           if (stderrFd != Integer.MIN_VALUE) {
              process.getStderr().release();
           }
        }
     }