首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python子进程CREATE_NEW_CONSOLE窗口在kill()时不关闭

问题描述:

Python子进程CREATE_NEW_CONSOLE窗口在kill()时不关闭。

解答:

在Python中,可以使用subprocess模块创建子进程,并通过CREATE_NEW_CONSOLE标志来创建一个新的控制台窗口。然而,当我们使用kill()函数来终止子进程时,子进程创建的控制台窗口可能不会自动关闭。

这是因为CREATE_NEW_CONSOLE标志创建的控制台窗口与父进程是独立的进程,终止子进程并不会自动关闭控制台窗口。为了解决这个问题,我们可以使用subprocess模块中的Popen类来创建子进程,并使用terminate()方法来终止子进程。

下面是一个示例代码:

代码语言:python
复制
import subprocess
import os
import signal

# 创建子进程并指定CREATE_NEW_CONSOLE标志
proc = subprocess.Popen(['python', 'child_process.py'], creationflags=subprocess.CREATE_NEW_CONSOLE)

# 终止子进程
proc.terminate()

# 关闭子进程创建的控制台窗口
os.kill(proc.pid, signal.CTRL_BREAK_EVENT)

在上面的示例中,我们首先使用Popen类创建一个子进程,并指定CREATE_NEW_CONSOLE标志。然后,我们使用terminate()方法终止子进程。最后,我们使用os.kill()函数发送CTRL_BREAK_EVENT信号来关闭子进程创建的控制台窗口。

需要注意的是,os.kill()函数在Windows系统上发送CTRL_BREAK_EVENT信号可以关闭控制台窗口,但在其他操作系统上可能不适用。因此,如果需要在跨平台的环境中关闭子进程创建的控制台窗口,可能需要使用其他方法。

推荐的腾讯云相关产品:

  • 云服务器(CVM):提供弹性计算能力,可满足各种规模的应用需求。产品介绍链接
  • 云函数(SCF):无服务器计算服务,支持按需运行代码,无需管理服务器。产品介绍链接
  • 云容器实例(TCI):提供轻量级、弹性、安全的容器化应用运行环境。产品介绍链接

以上是关于Python子进程CREATE_NEW_CONSOLE窗口在kill()时不关闭的解答,希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

查找并关闭进程

ps -ef | grep 进程名 如:ps -ef | grep python 查看python运行了那些进程 注释:标准的kill命令通常都能达到目的。...终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了进程,只杀死父进程进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保杀死父进程之前,先杀死其所有的进程。...kill -l pid -l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项kill命令也试图杀死所留下的进程。...kill -HUP PID 该命令让Linux和缓的执行进程关闭,然后立即重启。配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程就可以执行此命令。...kill -9 PID 这个强大和危险的命令迫使进程在运行时突然终止,进程结束后不能自我清理。危害是导致系统资源无法正常释放,一般推荐使用,除非其他办法都无效。

2.1K30

【操作系统】Windows进程间的通信

进程从来执行任何东西,它只是纯粹的容器,或说是线程的执行环境。...进程的线程既可以进程终止之后执行代码,也可以进程运行的过程中执行代码。...原理:当一个进程复制数据,是将数据放到内存区域中,当另一个进程粘贴数据,从该内存区域取出数据,显示到窗口上面。...主机间进程邮槽通信,数据通过网络传播使用的是数据包协议(UDP),所以是一种不可靠通信。通过网络进程邮槽通信,客户端必须知道服务端的主机名或域名。...通常用来进程进程之间通信。只能实现本地两个进程之间的通信。不能实现网络通信。 优点是效率高,原理本质上就是共享内存。

79540

ubuntu下的进程控制系统————Supervisor

我们部署网站或者ssh到服务器上去进行一些长时间操作的任务时候,通常不喜欢长时间开启终端在其中等待,尤其是Windows下putty这类软件,长时间操作就会结束,尴尬的是,我们跑的进程也会直接终端...; 重定向stderr到stdout stdout_logfile=logfile ; 指定日志文件 ; 默认为 false,如果设置为 true,当进程收到 stop 信号,会自动将该信号发给该进程进程...例如在 Debug 模式使用 Flask ,Flask 不会将接收到的 stop 信号也传递给它的进程,因此就需要设置这个配置项。...信号,会自动将该信号发给该进程进程。...如果这个程序使用了 python 的 multiprocessing ,就能自动停止它的线程。

77710

Windows黑客编程技术详解 --第四章 木马启动技术(内含赠书福利)

STARTUPINFO或STARTUPINFOEX中的句柄不需要必须由CloseHandle关闭。...PROCESS_INFORMATION中的句柄必须在不需要由CloseHandle关闭。 返回值 如果函数成功,则返回值非零。 如果函数失败,则返回值为零。...然后将wShowWindow置为SW_HIDE隐藏窗口,创建方式为CREATE_NEW_CONSOLE创建一个新控制台,这样可以成功隐藏执行CMD命令行的窗口,而其他程序窗口则不能成功隐藏。...PROCESS_INFORMATION中的句柄必须在不需要使用CloseHandle关闭。 返回值 如果函数成功,则函数将返回一个非零值;如果函数失败,则返回零。...不需要使用进程环境块,可以通过调用DestroyEnvironmentBlock函数进行释放。获取环境块后,就可以调用CreateProcessAsUser来创建用户桌面进程

3.6K50

Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作

,不以终端机来区分 3、关闭当前后台运行的命令 kill命令:结束进程 (1)通过jobs命令查看jobnum,然后执行 kill %jobnum (2)通过ps命令查看进程号PID,然后执行...2、 & 表示在后台执行脚本 这样可以到达目的,但是,我们退出shell窗口的时候,必须用exit命令来退出,否则,退出之后,该进程也会随着shell的消失而消失(退出、关闭) 使用nohup...0.0 5980 752 pts/0 S+ 15:48 0:00 grep python 在当我们直接关闭shell窗口,再连接上服务器,查看Python进程,发现进程还在...但是,python运行中却查看不到输出!...因为: python的输出有缓冲,导致python.log3并不能够马上看到输出。 使用-u参数,使得python启用缓冲。

11K21

窗口结束不断循环的线程

当程序有循环线程窗口关闭(通过窗口右上角X按钮),重新启动程序失败,提示是否执行上一次结果,每执行上一次结果,就积累一个线程在编译器,因为程序没有完全关闭。...网上说关闭进程,但是该陈序的进程已经关闭了,只是编译器的线程关不了,下面是关闭陈序进程的方法(但问题没解决) /// /// 停止进程 /// /// <...当你打开一个窗体,进行某项操作,如果字窗体中有循环操作。...如果运行中我关闭窗体,发现窗体虽然关闭了,但子窗体中的循环程序却没有退出,一直 执行,并占用着系统资源,直到循环结束,才真正的释放资源。...我感觉最好方法的就是,窗体的Closing事件中,写循环退出条件,这样就可以避免某些未知的错误,而且可以只关闭窗体,并释放窗体占用的资源 1.Application.Exit(): 方法停止在所有线程上运行的所有消息循环

1.5K41

Windows 编程(多进程

地址空间 它包含所有可执行模块或 DLL 模块的代码和数据.另外,它也包含动态 内存分配的空间,例如线程的栈和堆分配空间 进程从来执行任何东西,它只是纯种的容器,若要使进行完成某项操作,它必 须拥有一个它的环境中运行的纯种...邮槽由服务端创建, 创建需要指定邮 槽名, 创建后服务端得到邮槽的句柄。 邮槽创建后, 客户端可以通过邮槽名打开邮槽, 获得句柄后可以向邮槽写入消息。...客户端先写入的消息服务端先被读取。 通过邮槽通信的数据可以是任意格式的, 但是一条消息不能大于 424 字节。 邮槽除了本机内进行进程间通信外, 主机间也可以通信。...但是主机间进行邮槽通 信, 数据通过网络传播使用的是数据报协议(UDP), 所以是一种不可靠的通信。 通过网 络进行邮槽通信, 客户端必须知道服务端的主机名或域名。...通常用来 进程进程之间通信。 只能实现本地两个进程之间的通信。 不能实现网络通 信。

1K10

【小家运维】达到Linux第三阶段的常用命令笔记记录—Part Ⅲ

当然还包括我们的Java Web服务,它的线程需要一直运行着~~~ 为何关闭窗口/断开链接,正在运行的程序会死掉?...当终端接口检测到网络连接断开,会给给控制进程(会话期首进程)发送一个挂断信号(终止程序的信号) 如果会话期首进程终止,则该信号发送到该会话期前台进程组,从而导致进程的停止 因此当网络断开或终端窗口关闭后...应用Unix/Linux,我们一般想让某个程序在后台运行,于是我们将常会用 & 程序结尾来让程序自动运行。...若只有一个screen会直接进入,若有多个效果同screen -ls,所以我一般都这么使,省事啊 关闭一个session:screen内部执行exit命令。...(Background),fg 将进程搬到前台运行(Foreground) kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。

1.7K20

linux系统管理初学者指南 基于centos 7.6下载_centos查看运行的进程

1.每行信息 2.top 快捷键: 五、lsof 命令 用于查看你进程调用、打开的文件 六、kill 关闭进程 1)kill信号 2.killall 命令 (关闭一类进程) 3.pkill 命令 (关闭一类进程...进程执行所有代码之后,它将相关终止报告发给父进程。 父进程正常情冴下会移除所有进程的数据结构。 如果父进程没能接收进程退出信号,那么子进程变为僵尸进程。...,在读哪些文件 [root@localhost ~]# lsof -i :22 #用于查看端口,或查看开启端口是哪个进程使用 六、kill 关闭进程 关闭进程 3 个命令:kill killall...pkill kill 关闭进程kill 进程关闭单个进程 killall 和 pkill 命令用于杀死指定名字的进程 通过信号的方式来控制进程kill -l =====> 列出所有支持的信号...) kill [选项][信号] 进程名 选项:-i:交互式,询问是否要杀死某个进程

1K20

并发编程~先导篇上

你知道 Kill-9pid的真正含义吗? 你知道那些跨平台框架(Python,NetCore)Linux下创建进程干了啥? 你了解 僵尸进程和 孤儿进程的悲催生产史吗?...和上面处理一样,只是竞争的强度没那么大了 开了4个窗口,不着急,一人一个窗口妥妥的 ---- 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开两个浏览器就启动了两个浏览器进程...一个进程内部,要同时干多件事,就需要同时运行多个“任务”,我们把进程内的这些“任务”称为线程(Thread)。 由于每个进程至少要干一件事,所以,一个进程至少有一个线程。...or 进程只写,父进程只读 (如果想要相互读写通信~两根管道走起) 简单分析一下 ps aux|grep python ,本来ps aux是准备终端中输出的,现在写入内核缓冲区了,grep从内核缓冲区里面读取...3、4都指向了 pipe管道的 read_fd和 write_fd 来张图理解一下,哪些fd被close了(如果让进程之间通信,父进程因为不读写,所以读写都得关闭) 代码演示:(这次注释很全

1.8K80

1.并发编程~先导篇(上)

你知道那些跨平台框架(Python,NetCore)Linux下创建进程干了啥? 你了解 僵尸进程和 孤儿进程的悲催生产史吗? 孤儿找干爹, 僵尸送往生想知道?...简单概况上图:进程只读,父进程只写 or 进程只写,父进程只读 (如果想要相互读写通信~两根管道走起) 简单分析一下 ps aux|grep python ,本来ps aux是准备终端中输出的,现在写入内核缓冲区了...PS:C系列里面如果你该关闭的fd没关,会资源浪费,python好像做了处理,没能够问题复现,所以还是建议父子一方只读,一方只写 ---- 概念再理解:fork了两个子进程,则文件描述符被复制了2份,...来张图理解一下,哪些fd被close了(如果让进程之间通信,父进程因为不读写,所以读写都得关闭) ?...,除了血缘关系进程通信,没有血缘关系的进程也可以通信 磁盘上有会存放一个文件类型为 p,大小为 0的管道文件(伪文件,大小始终为0) 内核中有一个对应的缓冲区(数据就放在里面) 半双工通信:同一刻里

1.4K40

Linux进程管理详细解读

bg background 前台程序 jobs 查看后台进程 nohup 不挂起运行程序,关闭登录窗口后程序继续运行 disown 忘记使用nohup之后,将后台任务转换为...R(运行):进程正在运行或在运行队列中等待。 S(中断):进程处于休眠中,当某个条件形成后或者接收到信号,则脱离该状态。 D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。...kill -9 12000 4 screen Screen是一个可以多个进程之间多路复用一个物理终端的全屏窗口管理器。...Screen 中有会话的概念,用户可以一个会话中创建多个 screen 窗口每一个 screen 窗口中就像操作一个真实的 t elnet/SSH 连接窗口那样。...ctrl + a,w #会话列表 ctrl + a,p #上一个会话 ctrl + a,n #下一个会话 ctrl + a,0-9 #第0窗口至第9会话间切换 4.3使用案例

91930

Linux下进程相关知识

一个进程是一个正在运行的程序的实例,打开3个终端窗口两个窗口中运行cat命令,传递任何选项(cat进程将作为一个进程保持打开状态,因为它期望stdin)。...当系统启动,内核创建了一个名为init的进程,它的PID为1。除非系统关闭,否则无法终止init进程。它以根权限运行,并运行许多保持系统运行的进程。 4....孤儿进程当父进程进程之前死亡,内核知道它不会得到一个等待调用,所以它会让这些进程成为“孤儿”,并将它们置于init(记住所有进程的父进程)的照顾下。...当一个信号由某个事件生成,它被传递给一个进程传递之前它被认为处于挂起状态。...SIGHUP 挂起,当控制终端关闭发送给进程。例如,如果关闭了一个终端窗口,其中正在运行一个进程,那么将得到一个SIGHUP信号。

1.4K50

使用python执行shell脚本 并动态传参 及subprocess的使用详解

最近工作需求中 有遇到这个情况 web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subprocess...如果close_fds为true,则在执行进程之前,将关闭除0,1和2之外的所有文件描述符。 如果shell为true,则指定的命令将通过shell执行。...所有这些外部表示被Python程序视为\ n。注意:此功能仅在Python是使用通用换行支持(默认)构建才可用。...他们可以指定诸如主窗口的外观和新过程的优先级等内容。...Popen.kill() 杀死进程 以上这篇使用python执行shell脚本 并动态传参 及subprocess的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考。

5.2K30

Tomcat 进程意外突崩,元凶居然是它...

这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...我们的推测是ssh窗口关闭,对当前交互的shell以及正在运行的test.sh等子进程发送某个退出的Signal,找了一台装有systemtap的机器来验证,所用的stap脚本是从涧泉同学那里copy...11 ] -> [ 0 20615 test.sh ] 注pid 11是events进程 b) 关闭ssh终端窗口,sshd向下游进程发送SIGHUP, 为何java进程也会收到?...这说明shell对signal_handler做手脚是执行用户逻辑之前,也就是脚本fork出进程的时候就设置了。...按照这个线索我们google后了解到: shell非交互模式下对后台进程处理SIGINT信号设置的是IGNORE。

92410

Tomcat进程意外退出,元凶居然是他...

这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...我们的推测是ssh窗口关闭,对当前交互的shell以及正在运行的test.sh等子进程发送某个退出的Signal,找了一台装有systemtap的机器来验证,所用的stap脚本是从涧泉同学那里copy...11 ] -> [ 0 20615 test.sh ] 注pid 11是events进程 b) 关闭ssh终端窗口,sshd向下游进程发送SIGHUP, 为何java进程也会收到?...这说明shell对signal_handler做手脚是执行用户逻辑之前,也就是脚本fork出进程的时候就设置了。...按照这个线索我们google后了解到: shell非交互模式下对后台进程处理SIGINT信号设置的是IGNORE。

3.9K10

linux 后台运行进程:& , nohup

当我们终端或控制台工作,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够每天的非负荷高峰时间段运行(例如凌晨)。...(ps -ef | grep 进程号 或者 kill -9 进程号) nohup 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户),作业就会停止运行。...$nohup python manage.py runserver & 使用时注意: 在当shell中提示了nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过shell中输入...,不以终端机来区分 关闭当前后台运行的程序 kill 通过jobs命令查看job号(假设为num),然后执行kill %num 通过ps命令查看job的进程号(PID,假设为pid),然后执行kill...SSH窗口另一个窗口中可以看到top也被杀掉了。

4.3K40

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券