Articles of 子

Pythonsubprocess在返回输出之前在后台运行

我有一些我想用perf进行debugging的Python代码。 为此,我想使用subprocess。 以下命令返回进程的指令相关信息,直到通过Ctrl ^ C退出命令。 perf stat -p <my_pid> 现在,我想在后台运行Python代码,直到我希望能够终止它的操作并打印命令输出。 展现我的意思: x = subprocess.call(["perf","stat","-p",str(GetMyProcessID())]) .. CODE TO DEBUG .. print x # I want to terminate subprocess here and output 'x' 现在,我想确定在'print x'行中要做些什么来终止进程并检查输出。 任何想法/帮助表示赞赏。 欢呼声和感谢提前,

如何确定通过os.system启动的进程的PID

我想用程序启动几个子foo.py ,即模块foo.py启动foo.py几个实例。 由于我有时不得不手动终止进程,我需要进程id来执行kill命令。 即使整个设置是相当“脏”,是否有一个良好的pythonic方式来获得进程的pid ,如果进程是通过os.system启动? foo.py: import os import time os.system("python bar.py \"{0}\ &".format(str(argument))) time.sleep(3) pid = ??? os.system("kill -9 {0}".format(pid)) bar.py: import time print("bla") time.sleep(10) % within this time, the process should be killed print("blubb")

如何获得进程的祖父母身份证

我怎样才能得到当前进程的父进程ID? 一般给一个进程ID我怎么能得到它的父进程ID? 比如os.getpid()可以用来获取父进程的id和os.getppid(),我如何得到祖父母, 我的目标是Linux(Ubuntu的),所以平台的具体答案是好的。

如何从subprocess.Popen()获取输出

我想从执行Test_Pipe.py输出,我试过在Linux上的代码,但它没有工作。 Test_Pipe.py import time while True : print "Someting …" time.sleep(.1) Caller.py import subprocess as subp import time proc = subp.Popen(["python", "Test_Pipe.py"], stdout=subp.PIPE, stdin=subp.PIPE) while True : data = proc.stdout.readline() #block / wait print data time.sleep(.1) proc.stdout.readline()被封锁,所以没有数据打印出来。

Subprocess.call或Subprocess.Popen不能使用PATH(Linux / Windows)中的可执行文件

我正在编写一个程序,需要在Linux和Windows上运行,并使用path中存在的可执行文件(带有参数)。 (假定) 目前,我在使用Subprocess.Call和Subprocess.Popen在Windows中运行可执行文件时遇到问题。 对于这样的代码,在Windows 8中 def makeBlastDB(inFile, inputType, dbType, title, outDir): strProg = 'makeblastdb' strInput = '-in ' + inFile strInputType = '-input_type ' + inputType strDBType = '-dbtype ' + dbType strTitle = '-title ' + title strOut = '-out ' + os.path.join(os.sep, outDir, title) cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut] result […]

使用VLC的虚拟接口时如何防止显示控制台

我尝试从Node.js服务器脚本以“虚拟”模式启动VLC,但是使用child_process.spawn('vlc',['-I dummy'])会在使用Windows时为VLC的输出生成一个新的控制台窗口。 有没有办法来防止这种情况发生,并通过标准输出ReadableStream强制所有的标准输出,所以没有“popup窗口”发生? 编辑 :这个问题与node.js没有任何关系,只是我调用它的方式和VLC的行为。 解决scheme如下。 谢谢。

Windowsbatch file – 显示所有子文件夹

我很难使用Windowsbatch file返回JUST文件夹(忽略文件)。 这是我现在所拥有的。 目前它正在回荡文件和子文件夹。 for /r %%g in ("xx*") do echo %%g 另外,假设我只想返回以不同前缀开头的文件夹。 例如:我只想回显文件夹“work”下的以w *,we *,cm *,cr *等开头的文件夹。 我这样做是否可以使用batch file? 谢谢。

Popen冲突的可执行文件/path

我想使用Popen从Python脚本中调用ImageMagick中的“convert”实用程序,如下所示: Popen(["convert", input_path, "-flop", output_file_path]) (上面的例子简单地反转了图像水平) 问题是,当我在Windows中运行脚本时,它错误地调用Windows附带的convert.exe实用程序将FAT分区转换为NTFS! (位于\ Windows \ system32) 现在,如果我在system32以外的任何目录中随机打开一个命令提示符并键入“convert”,它就会正确运行ImageMagick可执行文件。 所以,这意味着Popen自动查找system32。 我怎样才能让它不看在system32,并运行正确的可执行文件?

Windows 7 64位上的Pythonsubprocess – stdout = PIPE时不输出

对于有关Pythonsubprocess的另一个问题抱歉,但我找不到答案。 我在一些调用Windows 7 64位subprocess的Python代码时遇到了麻烦。 当subprocess的stdout被发送到pipe道时,不会产生输出。 subprocess似乎运行并终止没有问题,它只是不会产生任何输出。 编辑:相同的代码在WinXP 32bit上正常工作,所以我更新了问题标题。 # (listing 1) from subprocess import * #cmdline= (a valid command line) proc = Popen(cmdline,shell=True,stdout=PIPE,stderr=PIPE) out, err = proc.communicate() print( out ) print( err ) 这给出了输出 out: err: 但是,如果子stream程的输出不是pipe道,则会按预期生成输出: # (listing 2) proc = Popen(cmdline,shell=True) proc.communicate() 这给了控制台预期的输出。 我相信可执行文件实际上是将其输出写入标准输出。 我有C源代码,我添加了这一行: fprintf(stdout, "HELLO"); 再次,运行清单2时看到“HELLO”,但没有列出清单1。 我也尝试制作一个新的C ++可执行文件,并从cmdline调用它: #include <iostream> int […]

subprocess:在Windows中删除subprocess

在Windows上, subprocess.Popen.terminate调用win32的TerminalProcess 。 但是,我看到的行为是我正在尝试终止的进程的subprocess仍在运行。 这是为什么? 如何确保stream程启动的所有subprocess都被终止?