python 监听 其他程序发消息_python进程之间消息监控程序

2023-11-06

外界调用向mgr进程发送消息,mgr根据不同消息启动或关闭相应进程(启动的进程,独占用,只启动一个);

若有进程程退出 则mgr向外界发出信号。

外界代码:

#!/usr/bin/python

#

# -*- coding:utf-8 -*-

#

#

import sys

import os

import subprocess

import signal

import time

import random

def sig_usr1(signum, frame):

print("recive sinal from process(exited)")

signal.signal(signal.SIGUSR1, sig_usr1)

cmds= ['./mgr.py']

n =1

p = subprocess.Popen( cmds,stdin=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=False)

while True:

time.sleep(1)

ret = p.poll()

if ret is None:

#print("main="+str(n))

p.stdin.write(str(n)+"\n")

p.stdin.flush()

p.send_signal(signal.SIGUSR1)

n = random.randint(1, 3)

print("main exit")

管理进程

#!/usr/bin/python

#

# -*- coding:utf-8 -*-

#

import sys

import os

import time

import signal

import subprocess

import json

data = {'num': 0, 'error': 0}

def getParentID():

p=subprocess.Popen("ps -ef|grep tt.py|grep -v grep|awk '{print $2}'",stdout=subprocess.PIPE,shell=True)

ret = int(p.stdout.readline())

return ret

par_id = getParentID()

print(par_id)

exe_process = 0

isRuning = True

def sig_usr1(signum, frame):

ret = sys.stdin.readline()

data['num'] = int(ret)

signal.signal(signal.SIGUSR1, sig_usr1)

while isRuning:

time.sleep(1)

print("data['num'] ="+str(data['num']))

if exe_process == 0: #for open

if data['num'] == 1:

exe_process=subprocess.Popen("./a.out",close_fds=False)

elif data['num'] == 2:

exe_process=subprocess.Popen("./b.out",close_fds=False)

else:

continue

else: #if exe_process == 0: for close

ret = exe_process.poll()

if ret is None:

if data['num'] == 3:

exe_process.terminate()

exe_process = 0

os.kill(par_id,signal.SIGUSR1)

else: #if ret is None self close

exe_process = 0

print("end"+str(par_id))

os.kill(par_id,signal.SIGUSR1)

print "mgr process over "

python进程通讯注意问题

1)发送信号: os.kill(par_id,signal.SIGUSR1)  #注意要 import os

2)subprocess结合管道要注意,不用就不要打开,否则容易出错

比如p = subprocess.Popen(cmd,stdin=subprocess.PIPE,close_fds=False)

stdin 要用到。

3)用subprocess调用Popen时候,cmd若是python脚本,要确保能编译通过并运行。则调用,否则不好排除错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 监听 其他程序发消息_python进程之间消息监控程序 的相关文章

  • 使用LibVlc解决视频播放中的部分问题

    使用LibVlc解决视频播放中的部分问题 标签 空格分隔 libvlc 简介libvlc vlc是一个开源的 跨平台的视频播放器 VLC支持大量的音视频传输 封装和编码格式 详情可访问 http www videolan org 了解 li
  • Linux的mysql在Windows无法远程连接

    Linux的mysql在Windows无法远程连接 0 设置跳过校验 mysqlId 添加skip grant tables vi etc my cnf 顺便查一下编码 1 权限不够只允许本机连接 linux登入mysql执行命令 gran
  • 计算机中原码反码补码的应用场合,反码

    反码是数值存储的一种 多应用于系统环境设置 如linux平台的目录和文件的默认权限的设置umask 就是使用反码原理 在计算机内 定点数有3种表示法 原码 反码和补码 中文名 反码 外文名 Inverse code所属领域 作 用 存储数值
  • DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)

    OSW MMOS直驱方向盘DIY过程记录 简书 jianshu com DIY 一个汽车方向盘游戏外设 MMOS OSW DIY 首先讲一下这个直驱系统大概的框架 首先是电脑 电脑里装MMOS的软件 这个软件国内高手把它汉化了的 电脑通过U
  • [983]mitmweb的使用

    安装mitmproxy时带有mitmweb 可直接在命令行输入命令 mitmweb 此时可打开web界面 来源 https www cnblogs com shenhf p 9783174 html
  • 超详细debug教程!小白必看!百分之八十的人都不知道的debug小技巧;pycharm界面如何设置?pycharm如何debug?for循环时如何停止?各种debug小技巧分享!

    如果你是刚上手python的小白 一定要看这篇文章 如果已经用了好几年python 也不要错过这篇文章哦 总有一些小tips是你不知道的 目录 1 整体界面设置 2 如何debug 3 怎么运行到下一步 3 1 Step Over 3 2
  • apk开发教程!那些年Android面试官常问的知识点,2年以上经验必看

    前言 下面的题目都是大家在面试字节跳动或者其它大厂面试时经常遇到的 如果大家有好的题目或者好的见解欢迎分享 参考解析 郭霖 鸿洋 内容特点 条理清晰 含图像化表示更加易懂 内容概要 包括 Handler Activity相关 Fragmen
  • 数据挖掘工程师主要做什么?

    转自 微点阅读 https www weidianyuedu com content 5317504350632 html 数据挖掘工程师负责科技数据挖掘算法模型的构建 应用 评测 报告 下面是第一范文网小编为您精心整理的数据挖掘工程师的基
  • SIMPLIS仿真软件1-SIMPLIS介绍

    SIMPLIS仿真软件1 SIMPLIS介绍 导读 SIMPLIS是什么 SIMPLIS的三种分析模式 SIMPLIS的三个关键概念 1 SIMPLIS是时域仿真 2 SIMPLIS的模型都是PWL模型 3 SIMPLIS的特有的POP的作
  • hausman检验_互助问答第302期:关于内生性检验的问题

    http weixin qq com r PTkwKHjEvSXCrTxL92wv 二维码自动识别 关于内生性检验的问题老师 您好 关于内生变量的检验常常相互矛盾 请问应当以哪种检验结果为准呢 1 首先进行豪斯曼检验结果如下 结论拒绝所有解
  • 怎样才能从Java初级程序员成长为一名合格的架构师?

    怎样学习才能从一名Java初级程序员成长为一名合格的架构师 或者说一名合格的架构师应该有怎样的技术知识体系 这不仅仅是一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题 下面 我来详细回答这些问题 希望这篇文章
  • 基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python和mysql开发的智慧校园答题考试系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档 数据库脚本等 该项目附带全部源码可作为毕设使用 项目
  • 搭建自己的searx搜索引擎

    Searx是一个隐私尊重的免费元搜索引擎 它具有以下功能特性 自我托管 默认不使用 Cookie 不跟踪 不分析用户 不收集用户数据 不与第三方共享用户数据 提供安全的加密连接 HTTPS SSL 等 如果您更在意隐私而不是效率 这会是一个
  • PPTP L2TP IPsec

    点对点隧道协议 PPTP PPTP是一个第2层的协议 将PPP数据桢封装在IP数据报内通过IP网络 如Internet传送 PPTP还可用于专用局域网络之间的连接 RFC草案 点对点隧道协议 对PPTP协议进行了说明和介绍 该草案由PPTP
  • springboot+cache缓存下(原理篇)

    原理 1 自动配置类 CacheAutoConfiguration 在idea中使用快捷键ctrl shift n 查找出CacheAutoConfiguration类 看到import中有导入CacheConfigurationImpor
  • S7-1200 PLC的数据类型

    S7 1200 PLC的数据类型 除了基本数据类型之外 还支持一些复杂的数据类型 包括结构数据类型Struct PLC数据类型UDT 数组Array 系统数据类型SDT 硬件数据类型DB ANY 参数数据类型Variant String和C
  • C++11静态断言static_assert

    C 11静态断言static assert 一 运行时断言 二 静态断言的需求 三 静态断言 四 单参数版本的静态断言 一 运行时断言 断言 assertion 是一种编程中常用的手段 在通常情况下 断言就是将一个返回值总是需要为真的判别式
  • vue3 组合式api中 ref 和$parent 的使用

    ref 的使用 vue3中 在 组件中添加一个 component ref xxx 就可以在父组件中得到 子组件的 dom 对象 以及 虚拟的 dom 对象 有了虚拟 dom 我们就可以在父组件中控制子组件的显示了 ref 的使用方法 vu
  • vue中的富文本框的使用(vue-quill-editor)

    一 安装 vue quill editor npm install vue quill editor 二 在main js中引入 import VueQuillEditor from vue quill editor import quil

随机推荐

  • Android Widget:DrawerLayout配合Toolbar的使用及常见问题

    前言 最近在仿写网易云音乐安卓端界面 记录下所遇到的问题及解决方案 DrawerLayout的基础使用 DrawerLayout经常配合NavigationView及Toolbar使用 编写侧滑栏 1 首先添加支持 implementati
  • MapReduce处理csv

    MapReduce处理csv csv是由逗号 来分割的文件 在编写Mapper类的时候需要以 分割成一个个的数据 查看一下csv数据 以上是为了测试做的数据 要处理的结果就是经过mapreduce再原封不动的出来 因为是测试 所以内容不做任
  • 搭建虚拟专网络服务器

    搭建虚拟专网络服务器 准备环境 一台windows server2008R2 服务器 没有安装ad域服务的 IP地址为 192 168 4 92 一台物理机windows 10 家庭版 1 首先安装 网络策略和访问服务 第二步 勾选上远程访
  • 为什么普通人赚钱这么难?普通人的赚钱之路在哪里

    前几天听一个老家的朋友说 辛辛苦苦一整年 发现并没有赚到什么钱 付出与收入不成正比 首先要知道勤奋 努力并不一定就能够赚到钱 像送外卖的 工地上班的 厂里上班的哪个不勤奋 但他们即使非常努力工作一个月 扣除基本开支 也存不了多少钱 那普通人
  • GNS3-GREvpn

    GREvpn 发一下这些日忙的东西 实验拓扑 以R2为界限的左半边运行ospf 各个链路已经ping通 用R7模拟PC1 PC1和R2的f0 0来回链路没问题 右半边同左半边做相应的配置也成功ping通 在R2和R3之间建立vpn隧道 网段
  • 利用Matlab绘制图像中的某一行或者某一列的灰度曲线

    filename C Users Administrator Desktop 透视变换 包含裂缝的整个图片 123 jpg imgData imread filename imshow imgData 该函数可以用来显示已经读入的数据 A
  • 解决AD中pcb原件移动提示绿色报错问题

    有可能以下三个原因之一所导致的 1 不符合DRC规则 比如原件之间距离过近 就是报错 2 右下角ROOM没有删除 右键清楚就可以啦 3 如果以上两个确证都是正常的 还是报错的话 终极解决方案 step1 在pcb界面下 点击design n
  • 主线3.1DeepFM模型论文阅读:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

    文章目录 一 摘要 二 模型演变和各模型间的对比 1 CTR的任务要求 2 DeepFM模型的引入 3 各模型间的对比 4 DeepFM优势 三 DeepFM模型介绍 1 FM部分 2 Deep部分 一 摘要 对于一个基于CTR预估的推荐系
  • selenium小项目实践

    1 斗鱼爬虫 爬取斗鱼直播平台的所有房间信息 游戏直播 全部游戏直播 斗鱼直播 1 1 思路分析 数据的位置 每个房间的数据都在id live list contentbox的ul中 实现翻页和控制程序结束 selenium中通过点击就可以
  • 基于麻雀搜索算法(SSA)优化长短期记忆神经网络参数SSA-LSTM冷、热、电负荷预测(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 冷负荷 2 2 热负荷 2 3 电负荷 3 参考文献 4 Python代码 数据 1
  • 虚拟滚动之原理及其封装

    本文分享自微信公众号 一Li小麦 gh c88159ec1309 作者 一li小麦 目前GitHub上只放出demo的版本 将在 https github com dangjingtao vList git 持续更新 前端的业务开发中会遇到
  • python输入输出+文件+OS

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 Python输入和输出 输出格式美化 Python三种输出值的方式 表达式语句 p
  • BSN区块链服务网络底十六章

    1 1 简介 服务网络的设计和建设理念完全借鉴互联网 互联网是由TCP IP协议将所有数据中心连接而形成的 服务网络是通过建立一套区块链运行环境协议将所有数据中心连接而组成 与互联网一样 服务网络也是跨云服务 跨门户 跨底层框架的全球性基础
  • MPEG I,B,P的顺序

    MPEG视频压缩算法的特点 数字化后的数据量之大非常惊人 如果不对原始视频图像数据进行压缩 则在与VCD 相同的光盘上只能存储20秒钟的中等分辨率 彩色视频图像 和JVC公司在制定VCD标准时采用了MPEG 1数字图像压缩编码国际标准 IS
  • 【Matlab】矩阵操作

    矩阵操作 生成矩阵 生成行矩阵的方式 冒号表达式 x 1 1 5 1 2 3 4 5 以步长为1 从1到5生成数值 构成行矩阵 若不设置步长 则默认步长为1 linspace a b n linspace 1 5 5 1 2 3 4 5 从
  • JavaScript typeof操作符确认数据类型

    返回 number typeof 1 typeof new Date getTime 返回 undefiend typeof undefined typeof console log 1 先打印1 再打印 undefined 返回 stri
  • Xilinx ISE、MicroBlaze系列教程

    本文是Xilinx MicroBlaze系列教程的第0篇文章 这个系列文章是我个人最近两年使用Xilinx MicroBlaze软核的经验和笔记 以Xilinx ISE 14 7和Spartan 6 Vivado 2018 3和Artix
  • 《TCP/IP网络编程》阅读笔记--并发多进程服务端的使用

    目录 1 并发服务器端 2 进程 2 1 进程的相关概念 2 2 fork 创建进程 2 3 僵尸进程 2 4 wait 和waitpid 销毁僵尸进程 3 信号处理 3 1 signal 函数 3 2 sigaction 函数 3 3 利
  • 熵权法stata程序

    Edited by Linhao Cui 公式部分参考 https wenku baidu com view a2600818bd64783e09122bf6 html 仅供学习交流使用 如有疑问或者问题 欢迎质疑讨论 如有侵权 请联系撤回
  • python 监听 其他程序发消息_python进程之间消息监控程序

    外界调用向mgr进程发送消息 mgr根据不同消息启动或关闭相应进程 启动的进程 独占用 只启动一个 若有进程程退出 则mgr向外界发出信号 外界代码 usr bin python coding utf 8 import sys import