Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.qspin.qtaste.testapi.impl.generic;
  
  import java.util.List;
  
 
 public class LinuxProcessImpl extends ProcessImpl implements LinuxProcess {
 
 	public LinuxProcessImpl(String pInstanceIdthrows QTasteException {
 		super(pInstanceId);
 		if ( OS.getType() != .. )
 			throw new QTasteTestFailException("Cannot create a Linux process on a non Linux operating system.");
 	}
 
 	public void start() throws QTasteException {
 		super.start();
 		 = searchPid();
 	}
 
 	public void terminate() throws QTasteException {
 		if ( getStatus() == . )
 		{
 		}
 	}
 	
 	public void killProcess() throws QTasteException {
 	}
 
 	public void killProcessWithSignal(int pSignalthrows QTasteException {
 			throw new QTasteTestFailException("Unable to stop a non running process.");
 		try
 		{
 			String command = "kill ";
 			if (pSignal > 0)
 				command += "-" + pSignal + " ";
 			if (getPid() == -1)
 				throw new QTasteTestFailException("Cannot kill a process if the pid cannot be found!");
 			
 			command +=  getPid();
 			.trace("Kill the process " + getInstanceId() + " with the command : " + command);
 			Runtime.getRuntime().exec(command);
 			Thread.sleep(10000);
 			.trace("Process " + getInstanceId() + " status : " + getStatus());
 			if ( getStatus() != . )
 				throw new QTasteTestFailException("The process " + getInstanceId() + " is still running.");
 		}
 		catch (IOException pException)
 		{
 			.error("Unable to kill the process " + getInstanceId() + " : " + pException.getMessage(), pException);
 		} catch (InterruptedException pException) {
 			.error("Unable to kill the process " + getInstanceId() + " : " + pException.getMessage(), pException);
 		}
 	}
 
 	public synchronized int getPid() throws QTasteException {
 		{
 			throw new QTasteException("Invalide state. Cannot retrieve tha pid of a non running process.");
 		}
 		if (  == -1 )
 			 = searchPid();
 		return ;
 	}

Searches the process'identifier of the current process. If none found, return -1.
Only available for Unix process.

Returns:
the process'identifier or -1 if none found.
 
 	protected synchronized int searchPid()
 	{
 		//rebuild the process command
 		String cmd = "";
 		for (int i=0; i<.i++)
 		{
 			if ( i > 0 )
 				cmd += " ";
 			cmd += [i];
 		}
 
 		List<Stringlines = new ArrayList<String>();		
 		//use ps command to list all processes and filter on the process command
 		try
		{
			java.lang.Process myProcess = Runtime.getRuntime().exec"ps -eo pid,command" );  
            BufferedReader stdout = new BufferedReadernew InputStreamReadermyProcess.getInputStream() ) ) ;  
            String line = stdout.readLine();
            while ( line != null )  
            {
            	if (line.contains(cmd) && !lines.contains(line))
            	{
            		.info("line found for the process : " + line);
					lines.add(line);
            	}
            	line = stdout.readLine();
            }  
            myProcess.waitFor() ;  
catch (IOException e) {
catch (InterruptedException e) {
		}
		//get the last process and retrieve the pid (first value of the line)
		if ( lines.size() >= 1 )
		{
			String line = lines.get(lines.size()-1).trim();
			return Integer.parseInt(line.split(" ")[0]);
		}
		else
		{
			.warn("unable to find the process pid");
			return -1;
		}
	}
	protected int mPid;
New to GrepCode? Check out our FAQ X