首页
学习
活动
专区
圈层
工具
发布

python 从subprocess运行的子进程中实时获取输出

起因是这样的,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做的就是用python 获取c++程序的...printf() 或cout 的输出; 环境linux python 3.8.x 以下代码实现,获取子程序输出 command='....shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息...p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行....参考文章1 python中的subprocess.Popen()使用 参考文章 2 python 从subprocess运行的子进程中实时获取输出

13K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    subprocess:Python中创建子进程

    前言 subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。...本篇,将详细介绍Python创建附加进行的库:subprocess。 run(运行外部命令) subprocess库本身可以替换os.system(),os.spawnv()等函数。...系统常用的whoami命令,返回当前用户的名称,输出如下: 这里,我们使用了subprocess.run调用了子进程运行windows命令。...returncode为子进程的退出状态码。通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了。...这样我们才能获取子shell运行的结果获取所运行的错误提示。(读者可以将命令改正确后可以发现错误消息没有了,正确执行结果会输出。

    1.8K70

    分析运行中的 Python 进程

    现在工作中我用的是 Python,需要线上问题定位的缘故,也有了类似的需求——想要知道当前的 Python 进程 “在干什么”。但是没有了 JVM 的加持,原有的命令或者工具都不再适用。...signal 在代码中,我们可以使用 signal 为进程预先注册一个信号接收器,在进程接收到特定信号的时候,可以打印方法栈: import traceback, signal class Debugger...脚本来发送这个信号: import os, signal os.kill($PID, signal.SIGUSR1) 原理是一样的。...其中,一个有用的命令是 strace: strace -p pid 比如,我自己写了一个测试脚本 t.py,使用 python 执行,然后调用 sleep,再给它发送一个 SIGUSR1 的消息,它打印方法栈并退出...比如,打开前面提到的这个测试进程: lsof -p 16872 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Python

    1.5K30

    如何在 Python 中终止 Windows 上运行的进程?

    当深入研究Windows操作系统上的Python开发领域时,无疑会出现需要终止正在运行的进程的情况。这种终止背后的动机可能涵盖多种情况,包括无响应、过度资源消耗或仅仅是停止脚本执行的必要性。...在这篇综合性的文章中,我们将探讨各种方法来完成使用 Python 终止 Windows 上运行的进程的任务。...方法3:释放“子流程”模块的力量 Python 的“子进程”模块赋予我们生成新进程的能力,与它们的输入/输出/错误管道建立连接,并检索它们的返回代码。...我们可以利用此模块来执行“taskkill”命令并有效地终止正在运行的进程。...shell=True' 参数在 Windows 命令外壳中执行命令时变得不可或缺。 结论 在这次深入的探索中,我们阐明了使用 Python 终止 Windows 上运行的进程的三种不同方法。

    4.7K30

    Python程序中创建子进程时对环境变量的要求

    首先,来看下面一段代码,在主进程中重新为os.environ赋值,但在子进程中并不会起作用,子进程中使用的仍是系统的全部环境变量。 ? 运行结果: ?...在Python中,为变量重新赋值实际上是修改了变量的引用,这适用于任意类型的变量。对于列表、字典、集合以及类似的可变类型对象,可以通过一定形式改变其中元素的引用而不改变整个对象的引用。...运行结果: ? 在主进程中清空了所有环境变量,然后创建子进程失败并引发了异常。...以Windows操作系统为例,创建子进程时会调用API函数CreateProcessA,该函数要求环境变量至少要包含SYSTEMROOT,否则调用另一个函数CryptAcquireContext时会失败...运行效果: ?

    3.1K30

    LNMP架构介绍、安装PHP(php-fpm)

    FastCGI特点: FastCGI具有语言无关性 FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。...-5.6.30]# make 报错: virtual memory exhausted: Cannot allocate memory #虚拟内存耗尽:无法分配内存 解决办法: 1、停掉虚拟机中未在使用的进程...ngx_lua ngx_lua是Nginx的一个模块,将Lua嵌入到Nginx中,从而可以使用Lua来编写脚本,这样就可以使用Lua编写应用脚本,部署到Nginx中运行,即Nginx变成了一个Web容器

    2.2K20

    Python Web 部署方式大全

    CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。 CGI方式在遇到连接请求(用户请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。...所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。当用户请求数量非常多时,会大量挤占系统的资源如内存,CPU时间等,造成效能低下。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出。...允许在一个进程中同时运行多个应用程序或应用框架。 负载均衡和远程处理,通过在网络上转发请求和响应消息。 进行内容后处理,例如应用XSLT样式表。...只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。WSGI就是Python的CGI包装,相对于Fastcgi是PHP的CGI包装。

    2K40

    困扰已久的问题 cgi、fastcgi、PHP-fpm 汇总

    既然这么多解释器,不能没有一个协议规定它们的标准,否则乱套了,这时候 cgi协议就出来了 ,说白了就是 apache/nginx 和后端的脚本语言(php,python等)交互之间制定的协议。...php.ini 配置文件,作为apache的子进程。...这里有个缺点:客户端浏览器的请求多了,apache创建的子进程会特别多,并且每次都重新读取 php.ini 配置文件。 FastCgi就是为了解决cgi的问题,制定的协议。...该协议规定, php-cgi.exe 我不再做你apache的子进程了,我独立了,这样你轻松了吧!我单独构成一个服务,这个服务规定一个master主进程,再启用几个worker进程。...php-cgi.exe 是解释器,也可以当作一个简易的 cgi/FastCgi 管理器。比如在windows系统中nginx是如何与php结合的呢?

    1.5K21

    linux下3种高效Kill掉所有python进程的方法(包括编写运行脚本 .sh)

    linux下3种kill所有python进程的方法 这篇文章主要介绍了linux下3种kill所有python进程的方法,需要的朋友可以参考下 在linux系统管理中,我们有时候需要kill掉所有...python进程,初学者一般先查询出python正在运行的进程(ps -ef|grep python),然后一条条kill掉,或者写好一个脚本(方法2),实际上方法都有现成的,这边有3种方法. 1....killall方式 # killall python 2.pkill方式 sudo pkill python 2. ps方式(脚本) ps列出ttlsa的pid,然后依次kill掉,比较繁琐...# ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9 #!.../bin/bash PROCESS=`ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9` #PROCESSE

    8.6K10

    PHP 之 FastCGI 与 mod_php

    背景PHP最常用的方式是以模块的方式(mod_php)运行在Apache中,也是Apache运行PHP的默认方式;但在Nginx中,Nginx又使用的是PHP-FPM,但是PHP-FPM到底是个什么东东...、Python等)。..., PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中,有兴趣大家可以研究PHP内核。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...当FastCGI子进程关闭连接时,请求便告处理完成,FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接,在CGI模式中,php-cgi在此便已经退出

    1.1K40

    CGI与FastCGI

    那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。...SCRIPT_FILENAME CGI脚本的完整路径 SCRIPT_NAME CGI脚本的的名称 SERVER_NAME 这是你的 WEB 服务器的主机名、别名或IP地址。...3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...4.FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

    2.1K20

    nginx服务器究竟是怎么执行php项目

    FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。...PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。...因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置:将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。

    1.5K10

    CGI & FastCGI

    那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。...SCRIPT_FILENAME CGI脚本的完整路径 SCRIPT_NAME CGI脚本的的名称 SERVER_NAME 这是你的 WEB 服务器的主机名、别名或IP地址。...3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...4.FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

    2K30

    nginx服务器究竟是怎么执行php项目

    FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。...当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。...FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。 在上述情况中,你可以想象CGI通常有多慢。...PHP-CGI的不足: php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 直接杀死php-cgi进程,php就不能运行了。...因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置:将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。

    1.1K10

    关于CGI和FastCGI的理解

    Web server会将相关环境变量和标准输入发送到FastCGI子进程php-cgi进行处理 4)FastCGI子进程完成处理后将数据按照CGI规定的格式返回给Web Server,然后关闭FastCGI...子进程或者等待下一次请求。...6)FastCGI的不足: 因为是在内存中同时运行多进程,所以会比CGI方式消耗更多的服务器内存,每个PHP-CGI进程消耗7至25兆内存,在进行优化配置php-cgi进程池的数量时要注意系统内存,...CGI程序运行在独立的进程中,并对每个Web请求建立一个进程,这种方法非常容易实现,但效率很差,难以扩展。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。...所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。

    3K40

    PHP 这么拉?长连接都搞不了?说说 PHP 的 socket 编程

    ,而是会 fork 出子进程并在子进程中运行指定的 CGI 脚本,脚本运行完成后通过标准输出将结果返回给 Web 服务器,并关闭子进程。...运行前 Web 服务器会将一些必要的请求信息设置在环境变量中,CGI 脚本运行后便可以通过读取环境变量得到这些请求信息,例如 uri、请求参数等。...CGI 模式示例 首先是一个 C 语言实现的服务器,监听 8080 端口,接到请求时如果请求的是指定 CGI 脚本则会通过 fp = popen(cgi_script, "r"); 以子进程的方式启动...CGI 脚本,由于使用 setenv 设置了环境变量,所以在子进程中可以读取到环境变量并做出一些计算处理。...默认没有开启 SO_REUSEPORT,那么主进程会在 initWorkers 函数中主动调用一次 listen 函数创建 socket,之后在 forkWorkers 函数中 fork 出子进程,子进程会继承这个

    37910

    Apache Httpd服务器之基础教程

    Httpd服务器是Apache产品线下的一款web服务器,常与PHP或Python等CGI脚本一起配合使用,为用户提供动态Web服务。...对于线程安全的脚本处理系统,如果你的机器是多核并且配置足够高,选择worker模块也许是更好的选择。     prefork使用一个单独的控制进程负责产生子进程,这些子进程用于监听请求并给出应答。...Apache总是试图保持一些备用的子进程用于迎接即将到来的请求,这样客户端就不用在得到服务前等待子进程的产生。配置mpm模块可以在配置文件的全局部分进行设置。...该子进程会被Kill掉。...ScriptAlias的意义是将uri为/cgi-bin/的路径映射到物理目录/usr/local/httpd/cgi-bin中,也就是你放cgi脚本的那个目录。

    1.3K20

    PHP一次请求的生命周期

    3.3当请求web服务器时,通过匹配后缀是动态的php请求,web服务器通过socket请求fastcgi进程管理器,fastcgi进程管理器,选择一个cgi解析器,web服务器将cgi环境变量和标准输入发送...fastcgi子进程php-cgi.  3.4fastcgi子进程处理完后将标准的输出和错误从同一个连接返回给web服务器,当fastcgi子进程结束后请求就结束了,fastcgi子进程接着等待处理来自...fastcgi进程管理器的下一个连接,在CGI模式中,php-cgi.在此便退出了。...4. mod_php: 即Apache运行PHP的默认方式,将PHP作为web服务器的子进程控制,mod_php模式运行PHP,意味着PHP是作为Apache的一个模块来启动的,因此只有在Apache启动的时候会读取...worder 进程的生命周期如下图: ---- 第二阶段:请求初始化阶段 当一个请求发生时,在处理请求前需要经历的一个阶段 : Nginx 解析一个请求 当符合php脚本请求的规则的时候,会把这个请求交给反向代理中的

    1.2K30
    领券