Я видел подобные вопросы здесь, но я не получил свой ответ. Может быть, это потому, что я новичок во всем этом и просто не понимаю. Я хочу, чтобы мое приложение работало в основном как индикатор. И если пользователь запустит его снова, он проверит, запущен ли он, если это так, затем передаст все входные данные этому процессу и выйдет.
Я пытаюсь создать это с помощью Quickly. Поэтому было бы неплохо, если бы вы могли дать мне несколько примеров Python или ссылку на что-то подобное.
На самом деле есть пакет с именем python-psutil для предоставления информации о процессе с использованием кодов Python.
Вы можете получить пакет здесь http://packages.ubuntu.com/lucid/ python-psutil
Существует еще один полезный пакет, названный вами PSI
PSI - это пакет Python, обеспечивающий доступ к процессам в режиме реального времени и другая разная системная информация, такая как архитектура, время загрузки и файловые системы. Он имеет pythonic API, который является единым для всех поддерживаемых платформ, но также предоставляет информацию о платформе, где это желательно.
Больше информации здесь: https://bitbucket.org/chrismiles/psi/wiki/Home
еще одна ссылка: https://stackoverflow.com/questions / 2703640 / процесс-лист-на-Linux-через-питона
Я узнал, что мне действительно нужен DBus для достижения того, что мне нужно. Итак, вот что мне действительно нужно было сделать:
# using quickly...
#
# __init__.py
# # # # # # # # # # # # #
import dbus
import sys
from gi.repository import Gtk
# import whatever else you need...
from my_app import MyAppDBusService
# import whatever else from your app...
def main():
bus = dbus.SessionBus()
# Check if my app is running and providing DBus service
if bus.name_has_owner('com.example.myApp'):
#if it is running pass the commandline variables to it and exit
#get my service from DBus
myService = bus.get_object('com.example.myApp', '/com/example/myApp')
#get offered method from DBus
myMethod = myService.get_dbus_method('my_method', 'com.example.myApp')
#call the method and pass comandline varialbes
myMethod(sys.argv)
#exit
sys.exit(0)
else:
#if not running
#run my DBus service by creating MyAppDBusService instance
MyAppDBusService.MyAppDBusService()
#do whatever with sys.argv...
#...
Gtk.main()
# MyAppDBusService.py
# # # # # # # # # # # # # #
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
#import whatever else you need...
# use the dbus mainloop
DBusGMainLoop(set_as_default = True)
class MyAppDBusService(dbus.service.Object):
def __init__(self):
# create dbus service in the SessionBus()
dbus_name = dbus.service.BusName('com.example.myApp', bus=dbus.SessionBus())
dbus.service.Object.__init__(self, dbus_name, '/com/example/myApp')
# offer a method to call using my dbus service
@dbus.service.method('com.example.myApp')
def my_method(self, argv):
#do whatever with argv...