Se as operações forem comparáveis ao OpenJDK v6-b14 , o PID será esteja disponível para ps
ao verificar o sistema de arquivos /proc
virtual. Você não pode ter certeza de que o processo realmente começou (ou seja, fez qualquer coisa); tudo que você sabe é que um PID foi reservado e agendado (pense nisso, o processo pode ter morrido e estar em um estado zumbi).
No entanto, como ps
bloqueia você em sistemas Unix, você pode usar o Reflection para acessar o objeto retornado pelo ProcessBuilder, com o entendimento de que ele o levará a um UnixProcess:
final class [More ...] UNIXProcess extends Process {
private FileDescriptor stdin_fd;
private FileDescriptor stdout_fd;
private FileDescriptor stderr_fd;
private int pid; <----------------------------------------------
private int exitcode;
É claro que este é um hack, mas não muito diferente do ps
- e certamente mais rápido. E não é realmente tão arriscado - eu não vejo um campo pid chamado pid
mudando muito em breve.