Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > System call


Автор: foRaver 25.4.2004, 21:49
Такая тема: есть программа написаная на Java (JSP) под Linux. Требуется запустить другую программу, используя механизм системного вызова. (System Call)

Зарание спасибо.

Автор: Sun 26.4.2004, 11:30
Есть два способа:
1. Вызвать через Runtime.getRuntime().exec програмку выполняющую системный вызов
2. Использовать Native Interface написать .so библиотечку с функцией выполняющими этот вызов

Автор: sergejzr 26.4.2004, 19:47
Вот работающий пример.
Функция call даже возвращает строку, которую выдаст вызываемое приложение wink.gif

Удачи!

Сергей.

Код

//--------------------------SystemCall.java------------------------------------------
import java.io.*;

class SystemCall
{
public static String call(String call)
 {
       Process p=null;
   Runtime r=Runtime.getRuntime();
   try
    {
  //Тут собственно сама команда
    p=r.exec(call);
  }
     catch (IOException e)
      {
    System.out.println("ne poluchilos' vypolnit' "+call);
       return null;
      }
  InputStream   is =p.getInputStream();
   InputStreamReader  isr =new InputStreamReader(is);
   BufferedReader   br  =new BufferedReader(isr);
    String s="";
    try
     {
     s=br.readLine();
     System.out.println(s);
     br.close();
     }
     catch(IOException e)
     {
   System.out.println("ne poluchilos' zachitat' "+s);
      return null;
     }
    p.destroy();
   return s;
  }
public static void main(String argv[])
{
 SystemCall.call("java ");
}
}
//--------------------------SystemCall.java------------------------------------------


Автор: foRaver 26.4.2004, 21:04
Sun, спасибо огромное, вариант No. 1 оказался то что надо! thumbs-up.gif
sergej.z, и тебе тоже спасибо огромное smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)