Aller au contenu

Développer en Java/Lancement de processus

Un livre de Wikilivres.

Pour lancer des processus à partir de java, il faut faire appel à :

  • la méthode Runtime.exec
  • la classe ProcessBuilder

Utilisation de Runtime.exec

[modifier | modifier le wikicode]

Exemple de code exécutant la commande Linux ls -alth :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class JavaLs
{
	public static void main(String[] args)
	{
		try
		{
			Process process = Runtime.getRuntime().exec("ls -alth");
			int i = process.waitFor();
			if ( i != 0 )
			{
				System.err.println("La commande ne s'est pas terminée normalement (code "+i+").");
				System.exit(-1);
			}

			BufferedReader stdout = new BufferedReader ( 
				new InputStreamReader ( process.getInputStream() ) );
			if ( stdout.ready() )
			{
				String line = stdout.readLine() ;
				while(line != null)
				{
					System.out.println(line);
					line = stdout.readLine() ;
				}
			}
			stdout.close();

			BufferedReader stderr = new BufferedReader ( 
				new InputStreamReader ( process.getErrorStream() ) );

			if ( stderr.ready() )
			{
				String errline = stderr.readLine() ;
				while(errline != null)
				{
					System.err.println(line);
					errline = stdout.readLine() ;
				}
			}
			stderr.close();
		}
		catch (InterruptedException e)
		{
			System.err.println("La commande ne s'est pas terminée normalement :");
			e.printStackTrace();
			System.exit(-1);
		}
		catch (IOException e)
		{
			System.err.println("La commande ne s'est pas terminée normalement :");
			e.printStackTrace();
			System.exit(-1);
		}
		System.exit(0);
	}
}

Utilisation de ProcessBuilder

[modifier | modifier le wikicode]