>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Интеграция с linux http://forum.mozilla-russia.org/viewtopic.php?id=29430 |
brain2xml > 06-01-2009 11:50:46 |
Добрый день! Я пытаюсь создать небольшое приложение и вопрос такой, возможно ли отправлять из xul команды на linux консоль, такие как cat ls и тд. и получать результат в js. если да то небольшой кусок кода или ссылка очень бы пригодился. спасибо |
Crazy-EyE > 09-01-2009 05:18:37 |
Можно запустить произвольный процесс, используя nsIProcess, в частности, sh/bash. Можно попытаться сделать вывод в файл и потом прочитать его (возможно, лучше в отдельном треде). Еще можно сделать свой бинарный XPCOM-компонент. |
Forest > 11-01-2009 11:54:18 |
brain2xml пишет
Выполнять команды можно Crazy-EyE пишет
. Только вот вывод в файл можно сделать только перенаправлением вывода (>,>>) (по крайней мере я другого варианта не нашёл). Выделить код Код:var tmpScriptFile = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("TmpD", Components.interfaces.nsIFile); tmpScriptFile.append("runFile.sh"); var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); foStream.init(tmpScriptFile, 0x02 | 0x08 | 0x20, 0700, 0); foStream.write("#!/bin/sh\n", "#!/bin/sh\n".length); foStream.write("ls > out.txt", "ls > out.txt".length); foStream.close(); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(tmpScriptFile); var args = []; process.run(true, args, args.length); |
Crazy-EyE > 11-01-2009 15:36:59 |
А что-нибудь типа /bin/bash -c нельзя?
Мммм, #!/bin/sh и ls под XP? |
Forest > 11-01-2009 21:16:45 |
Crazy-EyE пишет
А что оно делает? А то в инете как-то не ищется Crazy-EyE пишет
Ну вот и помогай после этого людям Forest пишет
. Или вы серьёзно думаете, что это всё городилось для простого ls?.. С другой стороны наверное можно настроить тот же Cygwin, чтобы даже это работало |
Crazy-EyE > 16-01-2009 19:11:58 |
Вроде в любом мане (например, в этом) написано: Выделить код Код:-c string If the -c flag is present, then commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0. Только я не уверен, закроется ли bash после выполнения команды сам или надо еще кокой-нибудь ключ. (Извините, давно прочитал пост и забыл ответить ) |
Forest > 16-01-2009 23:41:33 |
Crazy-EyE пишет
Просто на вскидку не нашёл - подумал, что мб это какая-то хитрая опция, связанная с выводом - получается что непринципиально. Crazy-EyE пишет
Приведённый мною пример закрывает нормально. |
Crazy-EyE > 17-01-2009 04:57:21 |
Просто это не настолько важно, чтобы перезагружаться в линукс, а в мане я быстро не нашел. Поэтому подумал, что тот, кто будет юзать это, попробует и нам скажет |
Forest > 17-01-2009 14:07:55 |
Crazy-EyE пишет
Действительно. Crazy-EyE пишет
Если не использовать каких-то специфических особенностей bash-а - всё должно работать |