Я пытаюсь написать программу, которая будет читать вывод из файла java .jar, а также время от времени вводить его. По сути, я надеюсь создать программу, которая будет выполнять определенные функции при обнаружении определенных выходных данных.
Файл .jar не был создан мной, и у меня нет исходного кода, поэтому я должен использовать его как есть. Проведя некоторое исследование, я решил, что fork()
и execl()
в сочетании с конвейерами - это метод, который мне нужно будет использовать, и я создал небольшую программу, которая успешно делает это с программой hello world. Как только я собирался изменить его для запуска программы .jar, я понял, что .jar не исполняется сам по себе, я должен выполнить его через java, и теперь я не могу понять, как сделать execl()
работа с .jar.
Я попытался выяснить, как заставить execl () запускать java и использовать аргумент, который определяет файл jar для выполнения следующим образом:
execl("java","java","jar myprog.jar",NULL);
Хотя я не знаю, сработает ли этот метод. Если это произойдет, я не знаю, какой путь использовать. Я видел, как некоторые люди рекомендуют использовать JNI для аналогичных целей, но ни один из них, казалось, не вполне соответствовал тому, что я делал, и после небольшого исследования я не совсем уверен, что это будет лучшим способом. popen () кажется еще одной возможностью, но я еще не нашел ничего, что объясняло бы, как правильно его использовать.
Любой совет будет принят с благодарностью.