Форум сайта python.su
Привет всем!
Стоит задача:
1) получить PID запущенного процесса из под Python
2) отследить тот момент, когда программа будет закрыта пользователем.
До второго пункта вопроса пока не дошёл, так как столкнулся с проблемой в первом вопросе.
Сама по себе задачка достаточно тривиальная
import os
pid=os.spawnlp(os.P_NOWAIT,'/Programs/bin/soffice','soffice','my_doc.doc')
print pid
$ python process.py
23409
$ I18N: Operating system doesn't support locale ""
I18N: Operating system doesn't support locale "en_US"
Xlib: extension "Generic Event Extension" missing on display ":0.0".
QTextCodec: using KOI8-R, probe failed (e0 ce ru)
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Failed to initialize GEM. Falling back to classic.
$
$ ps ax | grep soffice
23409 p1 I 0:00,01 /bin/sh /Programs/bin/soffice my_doc.doc
23414 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23415 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23416 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23417 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23419 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23421 p1 I 0:00,00 /bin/sh /Programs/bin/soffice my_doc.doc
23422 p1 I 0:00,00 /bin/sh /Programs/OpenOffice-EN3.0.1/bin/soffice my_doc.doc
23426 p1 I 0:00,01 /bin/sh /Programs/OpenOffice-EN3.0.1/openoffice.org-3.0.1/openoffice.org3/program/soffice my_doc.doc
23434 p1 S 0:11,89 /Programs/OpenOffice-EN3.0.1/openoffice.org-3.0.1/openoffice.org3/program/soffice.bin my_doc.doc
24655 p2 S+ 0:00,00 grep soffice
$
$ python process.py
29129
$ I18N: Operating system doesn't support locale ""
I18N: Operating system doesn't support locale "en_US"
Xlib: extension "Generic Event Extension" missing on display ":0.0".
QTextCodec: using KOI8-R, probe failed (e0 ce ru)
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Xlib: extension "Generic Event Extension" missing on display ":0.0".
Failed to initialize GEM. Falling back to classic.
$
$ ps ax | grep soffice
28843 ?? I 0:00,01 /bin/sh /Programs/bin/soffice
28848 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28849 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28850 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28852 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28853 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28855 ?? I 0:00,00 /bin/sh /Programs/bin/soffice
28856 ?? I 0:00,00 /bin/sh /Programs/OpenOffice-EN3.0.1/bin/soffice
28860 ?? I 0:00,01 /bin/sh /Programs/OpenOffice-EN3.0.1/openoffice.org-3.0.1/openoffice.org3/program/soffice
28868 ?? S 0:12,51 /Programs/OpenOffice-EN3.0.1/openoffice.org-3.0.1/openoffice.org3/program/soffice.bin
29653 p2 S+ 0:00,00 grep soffice
$ ps ax | grep 29129
29754 p2 S+ 0:00,01 grep 29129
$
Офлайн
Или задача настолько проста, что кому либо не охото на неё ответить, либо на столько сложна, что нет решений.
В любом случае, не уже ли нет никаких примерных решений этой проблемы?
Офлайн
Потыкался - у меня сколько бы не было открыто документов присутствует только один процесс soffice, похоже что он на запуске ищет уже запущенный экземпляр и если находит сообщает ему имя файла и завершается. Но тогда мне непонятен ваш результат ps
Офлайн
Но тогда мне непонятен ваш результат psВывод первого ps думаю понятен без пояснений. Второй поясняю. Python запускает ОО3 и возвращает PID полученного запущенного процесса
29129
ps ax | grep soffice
ps ax | grep 29129
23409 p1 I 0:00,01 /bin/sh /Programs/bin/soffice my_doc.doc
28843 ?? I 0:00,01 /bin/sh /Programs/bin/soffice
Офлайн