|
Какая замена 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
|
Все получилось, подружил типовой консоль из ИТС , который получает еще и план запроса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |