apartcore.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:apart-gtk 作者: alexheretic 项目源码 文件源码
def __init__(self, listeners: List[MessageListener] = None,
                 on_finish: Callable[[int], None] = lambda return_code: None):
        """Starts an apart-core command and starts listening for zmq messages on this new thread"""
        Thread.__init__(self, name='apart-core-runner')
        self.ipc_address = 'ipc:///tmp/apart-gtk-{}.ipc'.format(uuid.uuid4())
        self.zmq_context = zmq.Context()
        self.socket = self.zmq_context.socket(zmq.PAIR)
        self.socket.setsockopt(zmq.RCVTIMEO, 100)
        self.socket.bind(self.ipc_address)
        self.on_finish = on_finish
        self.listeners = listeners or []  # List[MessageListener]

        if LOG_MESSAGES:
            self.register(MessageListener(lambda msg: print('apart-core ->\n {}'.format(str(msg)))))

        # Current default is apart-core binary stored in the directory above these sources
        apart_core_cmd = os.environ.get('APART_GTK_CORE_CMD') or \
            os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + '/../apart-core')

        try:
            if os.geteuid() == 0 or os.environ.get('APART_PARTCLONE_CMD'):
                self.process = subprocess.Popen([apart_core_cmd, self.ipc_address])
            else:
                self.process = subprocess.Popen(['pkexec', apart_core_cmd, self.ipc_address])
        except FileNotFoundError:
            if os.geteuid() == 0:
                print('apart-core command not found at \'' + apart_core_cmd + '\'', file=sys.stderr)
            else:
                print('pkexec command not found, install polkit or run as root', file=sys.stderr)
            self.zmq_context.destroy()
            sys.exit(1)
        self.start()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号