开发者

What's the best way to get the output of an script (shell-script) in Xulrunner?

开发者 https://www.devze.com 2023-02-14 16:39 出处:网络
I\'m running a script with nsIProcess.run(), and the only way I found to get the output is to write the output to a file, and then read the file from javascript.

I'm running a script with nsIProcess.run(), and the only way I found to get the output is to write the output to a file, and then read the file from javascript.

But for some reason, when I execute it from the xulrunner application, it does not generate the file with the output. Here's my function:

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 use开发者_StackOverflow社区d to pass command-line arguments
    // to the process.
    process.run(true, [], 0);
}

my-script.sh:

echo ok > /tmp/result.txt

Is there a better (and working) approach to get this "ok" output from my-script.sh?

--update

I'm on Ubuntu 10.04 with Xulrunner 1.9.2.15


There is a third-party "ipc" library used e.g. by Enigmail that allows you to capture the output of a command. It might even become part of XULrunner at some point.

EDIT: As discussed in the comments, nsIProcess.run uses exec rather than system so the script needs to have a #! line so that the kernel can spawn the shell.


From the discussion above, it sounds like the process may not be getting kicked off at all.

I would try two things

  • Try calling some other process/executable
  • change null to [], perhaps it is silently failing, expecting this to be an array (even if it is an empty array)
0

精彩评论

暂无评论...
验证码 换一张
取 消