Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№106-01-2009 11:50:46

brain2xml
Участник
 
Группа: Members
Зарегистрирован: 06-01-2009
Сообщений: 1
UA: Firefox 3.0

Интеграция с linux

Добрый день!

Я пытаюсь создать небольшое приложение и вопрос такой, возможно ли отправлять из xul команды на linux консоль, такие как cat ls и тд. и получать результат в js.

если да то небольшой кусок кода или ссылка очень бы пригодился.

спасибо

Отсутствует

 

№209-01-2009 05:18:37

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Интеграция с linux

Можно запустить произвольный процесс, используя nsIProcess, в частности, sh/bash. Можно попытаться сделать вывод в файл и потом прочитать его (возможно, лучше в отдельном треде).

Еще можно сделать свой бинарный XPCOM-компонент.

Отсутствует

 

№311-01-2009 11:54:18

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Интеграция с linux

brain2xml пишет

Я пытаюсь создать небольшое приложение и вопрос такой, возможно ли отправлять из xul команды на linux консоль, такие как cat ls и тд. и получать результат в js.

Выполнять команды можно

Crazy-EyE пишет

используя nsIProcess

. Только вот вывод в файл можно сделать только перенаправлением вывода (>,>>) (по крайней мере я другого варианта не нашёл).
А ещё (именно под линем - под виндой работает) у меня не получилось перенаправлять вывод именно через параметр nsIProcess - пришлось создавать командный файл (возможно я просто не доразобрался с файловым доступом) :(
Вот такой код работает под [firefox] 2-3 под ХР и под Убунтой (с точностью до того, что он выдран из проекта с некоторыми изменениями, после чего не проверялся):

Выделить код

Код:

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);

---  ---

Отсутствует

 

№411-01-2009 15:36:59

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Интеграция с linux

А ещё (именно под линем - под виндой работает) у меня не получилось перенаправлять вывод именно через параметр nsIProcess - пришлось создавать командный файл

А что-нибудь типа /bin/bash -c нельзя?

Вот такой код работает под [firefox] 2-3 под ХР и под Убунтой

Мммм, #!/bin/sh и ls под XP?

Отсутствует

 

№511-01-2009 21:16:45

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Интеграция с linux

Crazy-EyE пишет

А что-нибудь типа /bin/bash -c нельзя?

А что оно делает? А то в инете как-то не ищется :(

Crazy-EyE пишет

Мммм, #!/bin/sh и ls под XP?

Ну вот и помогай после этого людям:(
Просили под линь - получили под линь!
Ведь сразу написал, что

Forest пишет

с точностью до того, что он выдран из проекта с некоторыми изменениями, после чего не проверялся

. Или вы серьёзно думаете, что это всё городилось для простого ls?..

С другой стороны наверное можно настроить тот же Cygwin, чтобы даже это работало ;)

Отредактировано Forest (11-01-2009 21:17:09)


---  ---

Отсутствует

 

№616-01-2009 19:11:58

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Интеграция с linux

А что оно делает? А то в инете как-то не ищется :(

Вроде в любом мане (например, в этом) написано:

Выделить код

Код:

-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 после выполнения команды сам или надо еще кокой-нибудь ключ.

(Извините, давно прочитал пост и забыл ответить:( )

Отсутствует

 

№716-01-2009 23:41:33

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Интеграция с linux

Crazy-EyE пишет

Вроде в любом мане (например, в этом) написано:

Просто на вскидку не нашёл - подумал, что мб это какая-то хитрая опция, связанная с выводом - получается что непринципиально.

Crazy-EyE пишет

Только я не уверен, закроется ли bash после выполнения команды сам или надо еще кокой-нибудь ключ.

Приведённый мною пример закрывает нормально.
Проще всего попробовать ;)


---  ---

Отсутствует

 

№817-01-2009 04:57:21

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Интеграция с linux

Проще всего попробовать ;)

Просто это не настолько важно, чтобы перезагружаться в линукс, а в мане я быстро не нашел. Поэтому подумал, что тот, кто будет юзать это, попробует и нам скажет :)

Отсутствует

 

№917-01-2009 14:07:55

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Интеграция с linux

Crazy-EyE пишет

Поэтому подумал, что тот, кто будет юзать это, попробует и нам скажет

Действительно.
А я и не заметил, что топикстартер нас давно покинул, а мы тут междусобойчик строили.

Crazy-EyE пишет

Только я не уверен, закроется ли bash после выполнения команды сам или надо еще кокой-нибудь ключ.

Если не использовать каких-то специфических особенностей bash-а - всё должно работать:)


---  ---

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]