Имя: Пароль:
1C
1С v8
Какая замена COM на линуксе и shell в частности
0 Ник второй
 
18.11.14
14:51
Есть код, который работает прекрасно на Win системе:

ОбъектСистемы = Новый COMОбъект("WScript.Shell");
    Если ИДТекущегоПроцесса = Неопределено Тогда
        Процесс = ОбъектСистемы.Exec("rundll32.exe kernel32,Sleep");
        ИДТекущегоПроцесса = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Process.Handle='" + Формат(Процесс.ProcessID,"ЧГ=0") + "'").ParentProcessID;
        Процесс.Terminate();
    КонецЕсли;

Подскажите пожалуйста замену для Линукса.
1 Ник второй
 
18.11.14
14:57
То есть задачу можно разложить на три:
1. Как заменить код Shell , видимо  на bash
2. Какой писать код на bash
3. Как вызвать данный код из 1С
2 18_plus
 
18.11.14
15:02
а что делает сей код?
3 18_plus
 
18.11.14
15:03
суицид?
4 sapphire
 
18.11.14
15:04
kill -9
5 Ник второй
 
18.11.14
15:04
(2) Судя по тексту получает ID 1C приложения....
6 18_plus
 
18.11.14
15:05
если суицид, то нужно узнать pid процесса, потом (4)
7 18_plus
 
18.11.14
15:06
(5) хы, т.е. ты незнамо что, собрался портировать?
8 Ник второй
 
18.11.14
15:07
(7) Я вроде конкретно сказал, что нужно )))
9 Ник второй
 
18.11.14
15:09
ОБщая задача такая:
Нужно получить ID процесса рпхоста
10 Ник второй
 
18.11.14
15:09
(9) + На котором выполняется обработка.
11 Гёдза
 
18.11.14
15:11
а почему не просто ЗавершитьРаботуПриложения()
12 18_plus
 
18.11.14
15:11
(8) ну вот тебе конкретный ответ: COM под линухом нету, вместо shell - bash, sh и т.п.
13 18_plus
 
18.11.14
15:12
(12) + COM заменить нечем.
14 Ник второй
 
18.11.14
15:14
(11) Это не надо...
Читаем внимательно:
1. Вызывается шел
2. Выполняется команда
3. получаем ид родителя шела
4. килим шел
15 Ник второй
 
18.11.14
15:15
(13) Не ужели нет интерфейса у Линукса?
16 18_plus
 
18.11.14
15:24
можно попробовать
cat /proc/$$/status|grep PPid
17 Garikk
 
18.11.14
15:33
(15) единого нет, была попытка чтото сделать (не в линуксе, а в принципе мультиплатформенный аналог COM) который назывался CORBA ... и помоему оно умерло ещё в середине 2000х г.г.

Линух он такой, это вам не винда :)
18 Garikk
 
18.11.14
15:34
Да и COM как таковой уже мертв, его заменили на .Net и тянут из совместимости
19 18_plus
 
18.11.14
15:35
(18) ты, по-моему, потерялся в понятиях
20 18_plus
 
18.11.14
15:36
com для взаимодействия
.net для разрабтки
21 Garikk
 
18.11.14
15:37
может быть, а что именно не так?
22 Ник второй
 
18.11.14
15:37
(16) Запустить как есть? Это на bash?
23 Ник второй
 
18.11.14
15:38
(18) То есть если я напишу програмулину на сях, то запустить скрипт на баше я не смогу?
24 18_plus
 
18.11.14
15:39
(22) КомандаСистемы наверное
25 Garikk
 
18.11.14
15:39
(20) в .net тоже есть механизм взаимодействия
история развития COM же это OLE->COM->DCOM->COM+->.Net
26 Ник второй
 
18.11.14
15:40
(24) Доступно только на клиенте, а ИД нужно получить на сервере
27 18_plus
 
18.11.14
15:40
(21) то, что .net не заменял com, не может заменить и в принципе предназначался не для этого.
28 18_plus
 
18.11.14
15:43
(26) значит ищи, как запустить команду на сервере
29 Asmody
 
18.11.14
15:50
(26) ЗапуститьПриложение() доступно на сервере
30 Asmody
 
18.11.14
16:02
подозреваю, что-то типа

ЗапуститьПриложение("kill -15 $PPID");
31 Asmody
 
18.11.14
16:03
или ЗапуститьПриложение("kill -9 $PPID");
32 Ник второй
 
18.11.14
16:04
(29) Как от ЗапуститьПриложение получить PID&
33 Ник второй
 
18.11.14
16:06
(31) То есть таким образом я получу ID rphost который запустил скрипт?
34 18_plus
 
18.11.14
16:07
(30) ему не убить надо, а получить пид родителя
походу достаточно echo $PPID
35 Ник второй
 
18.11.14
16:08
(34) И выведет на экран серверу PPID? А как в код вернуть его, на основании него строится последующая работа
36 Ник второй
 
18.11.14
16:11
Может быть есть смысл получить PPID, записать его в файл и прочитать его 1Сом?
Подскажите скрипт.

Так же гугл мне сказал, что Parent ID  можно получить так "$$" - это не тот ID?
37 18_plus
 
18.11.14
16:14
$$ - не родителя, а самого процесса

echo $PPID >> file.txt
38 Serginio1
 
18.11.14
16:17
(25) Ну нативу то с Net общаться только через COM
39 Asmody
 
18.11.14
16:19
в СП написано "запуск приложения выполняется непосредственно, минуя командный интерпретатор."
40 Asmody
 
18.11.14
16:20
походу надо как-то так "/bin/bash echo $PPID"
41 Ник второй
 
18.11.14
16:26
(37) Да получилось, теперь будем дальше ковырять.
42 Ник второй
 
18.11.14
16:43
Все получилось, подружил типовой консоль из ИТС , который получает еще и план запроса.
Программист всегда исправляет последнюю ошибку.