On 17/11/2010 21:30, Leon Rosenberg wrote: > Hi, > > I have a ugly issue I'm sure many people on this list already solved. > For multiple purposes I need pid's of processes, to stop/start them or > ensure they are running. So far nothing spectacular. > To obtain the pid I have following util: > > String[] cmd = { "/bin/bash", "-c", "echo $PPID" }; > p = Runtime.getRuntime().exec(cmd); > > and afterwards read the ppid from the output stream of my process. So > far - so good. > > The problem now occurs if a process has a lot of memory configured. > Like 25Gb on a 32Gb machine. In such a configuration the above command > fails with an OS'es out of memory, because fork > fails to create another process with THAT amount of memory: > > 1598388 2010-11-17 02:54:47,061 ERROR net.anotheria.util.PidTools - > Could not determine PID: java.io.IOException: Cannot run program > "/bin/bash": java.io.IOException: error=12, Cannot allocate memory > > Is there another method to obtain the process id from within the process?
I'm not sure I entirely understand the context, but if it's a Java 5+ process: ManagementFactory.getRuntimeMXBean().getName() will return <pid>@<hostname>. Are you trying to determine the PID of a new process, or the current one? p > > regards > Leon > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org >
0x62590808.asc
Description: application/pgp-keys
signature.asc
Description: OpenPGP digital signature