Какой лучший способ получить вывод скрипта (shell-script) в Xulrunner? - PullRequest
0 голосов
/ 04 марта 2011

Я запускаю сценарий с nsIProcess.run () , и единственный способ получить выходные данные - это записать вывод в файл, а затем прочитать файл из javascript.

Но по какой-то причине, когда я запускаю его из приложения xulrunner, он не генерирует файл с выводом.Вот моя функция:

function runProcess() {
    // create an nsILocalFile for the executable
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces["nsILocalFile"]);
    file.initWithPath("/home/me/my-script.sh");

    write("FILE EXISTS = " + file.exists()); // it is printing TRUE, good!


    // create an nsIProcess
    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
    process.init(file);

    // Run the process.
    // If first param is true, calling thread will be blocked until
    // called process terminates.
    // Second and third params are used to pass command-line arguments
    // to the process.
    process.run(true, [], 0);
}

my-script.sh:

echo ok > /tmp/result.txt

Есть ли лучший (и работающий) подход для получения этого «нормального» выводаиз my-script.sh?

- обновление

Я нахожусь на Ubuntu 10.04 с Xulrunner 1.9.2.15

Ответы [ 2 ]

0 голосов
/ 10 марта 2011

Из приведенного выше обсуждения звучит так, как будто процесс вообще не запускается.

Я бы попробовал две вещи

  • Попробуйте вызвать другой процесс / исполняемый файл
  • изменить ноль на [], возможно, он молча терпит неудачу, ожидая, что это будет массив (даже если это пустой массив)
0 голосов
/ 06 марта 2011

Используется сторонняя библиотека "ipc", например, Enigmail, который позволяет вам захватить вывод команды. В какой-то момент он может даже стать частью XULrunner.

РЕДАКТИРОВАТЬ: Как обсуждалось в комментариях, nsIProcess.run использует exec, а не систему, поэтому сценарий должен иметь #! строка, чтобы ядро ​​могло порождать оболочку.

...