API оболочки Linux API для Java - PullRequest
1 голос
/ 27 марта 2012

Есть ли в Java какие-либо API для запроса заданий? Другими словами, я ищу API для команды «jobs», чтобы я мог узнать статус заданий (running, stopped и т. Д.). В идеале я хотел бы иметь возможность отправлять задания, но я думаю, что этого легко достичь, вызвав shell и передав &

Ответы [ 3 ]

1 голос
/ 27 марта 2012

Команды оболочки могут быть вызваны через ProcessBuilder / API времени выполнения. Кроме этого нет Java-API. (Я сомневаюсь , даже существует C api. Если это так, вы можете использовать JNI и процесс управления)

1 голос
/ 27 марта 2012

Если у вас есть сценарий /velop - shell для работы с Job, то вы можете использовать java.lang.process apis для выполнения этого сценария оболочки и посмотреть, может ли он служить вашей цели.Вы также можете передавать аргументы вместе с параметрами.Ниже приведены фрагменты кода, которые могут быть вам полезны.

import java.io.IOException;
import java.io.InputStream;


public class MYProcess
{
   int startProcess()
   {
      String cmd = "/opt/test/bin/mystart.sh"

      // create a process for the shell
      ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd);
   // use this to capture messages sent to stderr
      pb.redirectErrorStream(true);                                      
      Process shell = null;
      int shellExitStatus =-1;     
      try
      {
         shell = pb.start();
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
      InputStream shellIn = shell.getInputStream();
      try
      {
         shellExitStatus = shell.waitFor();
         //logger.info("call exit status:" + shellExitStatus);
         //logger.info("If exit status is not zero then call is not successful. Check log file.");        
      }
      catch (InterruptedException e)
      {
         //logger.error("error while call" + e);
         e.printStackTrace();
      } // wait for the shell to finish and get the return code
      return shellExitStatus;
   }
}
1 голос
/ 27 марта 2012

Я думаю, что вы ищете java.lang.process, но он не может на самом деле вернуть статус (запущен, остановлен и т. Д.), А вместо этого может только возвращать выходное значение (err, std) или выходное значение.

...