在Raspberry Pi / Linux上通过Python脚本运行和停止C ++程序

时间:2019-12-23 13:00:17

标签: python c++ raspberry-pi

我正在为我的项目使用Google Cloud Firestore数据库。我正在尝试使用Python从数据库中检索数据,该数据是一个简单变量(1或0)。

因此,如果我从数据库中获得“ 1”,我想从当前的Python程序执行C ++程序。如果我得到一个“ 0”,我想终止那个正在运行的程序。

对此我有一些疑问,

从python运行C ++文件非常简单,但是如何 我如何终止它以及如何在尝试终止它之前检查它是否未运行

以下是我的python代码

import firebase_admin
import time
from firebase_admin import credentials
from firebase_admin import firestore
n=1
b=None
cred = credentials.Certificate('/Users/vijaypenmetsa/Desktop/key.json')
firebase_admin.initialize_app(cred)
db = firestore.client()
def on_snapshot(doc_snapshot, changes, read_time):
    for doc in doc_snapshot:
        a = doc.to_dict()
        b = a["status"]
        check(b)
#b is the variable retrieved from the database
def check(c):
    if c == 1:
        print("Start Driving")
    elif c == 0:
        print("Halt")
doc_ref = db.collection(u'status').document(u'carstatus')
while n>0:
    doc_watch = doc_ref.on_snapshot(on_snapshot)
    time.sleep(10)

1 个答案:

答案 0 :(得分:0)

使用psutil可以查看进程是否正在运行。这里的链接肯定会对您有所帮助:https://thispointer.com/python-check-if-a-process-is-running-by-name-and-find-its-process-id-pid/

最终代码如下:

import psutil

def checkIfProcessRunning(processName):
    '''
    Check if there is any running process that contains the given name processName.
    '''
    #Iterate over the all the running process
    for proc in psutil.process_iter():
        try:
            # Check if process name contains the given name string.
            if processName.lower() in proc.name().lower():
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass
    return False;



if checkIfProcessRunning('chrome'):
    print('Yes a chrome process was running')
else:
    print('No chrome process was running')

在这种情况下,我使用的是这个人的示例,因此检查chrome是否正在运行,但是您可以检查所需的内容

您可能希望通过在终端上运行以下代码为pip安装psutil:

pip3 install psutil

pip install psutil