public String start() throws Exception {
    authSocket = createLocalSocketAddress();
    address = new UnixSocketAddress(new File(authSocket));
    channel = UnixServerSocketChannel.open();
    channel.configureBlocking(false);
    socket = channel.socket();
    socket.bind(address);
    selector = NativeSelectorProvider.getInstance().openSelector();

    channel.register(selector, SelectionKey.OP_ACCEPT, new SshAgentServerSocketHandler());

    POSIXFactory.getPOSIX().chmod(authSocket, 0600);
    if (!new File(authSocket).exists()) {
      throw new IllegalStateException(
          "failed to create "
              + authSocket
              + " of length "
              + authSocket.length()
              + " (check UNIX_PATH_MAX)");
    }

    thread = new Thread(new AgentSocketAcceptor(), "SSH Agent socket acceptor " + authSocket);
    thread.setDaemon(true);
    thread.start();
    return authSocket;
  }
 public static boolean hasNonTTYInput() {
   POSIX posix = POSIXFactory.getPOSIX();
   return !posix.isatty(FileDescriptor.in);
 }