相关疑难解决方法(0)

在Python中调用外部命令

如何在Python脚本中调用外部命令(就像我在Unix shell或Windows命令提示符下键入它一样)?

python shell terminal command subprocess

4553
推荐指数
57
解决办法
325万
查看次数

如何终止使用shell = True启动的python子进程

我正在使用以下命令启动子进程:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时杀死:

p.terminate()
Run Code Online (Sandbox Code Playgroud)

要么

p.kill()
Run Code Online (Sandbox Code Playgroud)

该命令在后台继续运行,所以我想知道如何实际终止该进程.

请注意,当我运行命令时:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

它在发出时会成功终止p.terminate().

python linux subprocess kill-process

285
推荐指数
7
解决办法
26万
查看次数

阻止和非阻止子进程调用

我之间是完全糊涂了subprocess.call(),subprocess.Popen(),subprocess.check_call().

哪个是封锁哪个不是?

如果我用我的意思说的是subprocess.Popen()父进程是否等待子进程return/ exit它继续执行之前.

shell=True这些电话怎么影响?

python subprocess python-2.7 python-3.x

61
推荐指数
1
解决办法
5万
查看次数

subprocess:删除Windows中的子进程

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

python windows subprocess process kill-process

38
推荐指数
5
解决办法
2万
查看次数

从Python启动一个完全独立的过程

我正在尝试从python启动一个完全独立的进程.我不能使用像os.startfile这样简单的东西,因为我需要传递参数.目前我正在使用subprocess.popen,它让我90%的方式.

args = ["some_exe.exe", "some_arg", "another_arg"]
subprocess.Popen(args, creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

使用带有分离创建标志和std*管道的popen会启动一个新进程,该进程在父进程终止后继续存在.这一切都很好.问题是新的'子'进程仍然保留了父进程的幻象句柄.因此,如果我尝试卸载父exe(我的python脚本通过pyinstaller捆绑到exe),msiexec抱怨父exe仍在使用中.

因此,目标是生成一个完全独立的进程来运行"some_exe.exe",它没有任何句柄回原始进程.

注意:这适用于Windows XP及更高版本.我正在开发Win7.

python windows-installer popen

29
推荐指数
1
解决办法
1万
查看次数

使用popen和专用的TTY Python运行交互式Bash

我需要在Python中使用它自己的专用TTY在一个单独的进程中运行一个交互式Bash实例(我不能使用pexpect).我使用了这个通常在类似程序中使用过的代码片段:

master, slave = pty.openpty()

p = subprocess.Popen(["/bin/bash", "-i"], stdin=slave, stdout=slave, stderr=slave)

os.close(slave)

x = os.read(master, 1026)

print x

subprocess.Popen.kill(p)
os.close(master)
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到以下输出:

$ ./pty_try.py
bash: cannot set terminal process group (10790): Inappropriate ioctl for device
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)

运行的Strace显示一些错误:

...
readlink("/usr/bin/python2.7", 0x7ffc8db02510, 4096) = -1 EINVAL (Invalid argument)
...
ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7ffc8db03590) = -1 ENOTTY (Inappropriate ioctl for device)
...
readlink("./pty_try.py", 0x7ffc8db00610, 4096) = -1 EINVAL (Invalid argument)
Run Code Online (Sandbox Code Playgroud)

代码片段看起来很简单,Bash没有得到它需要的东西吗?这可能是什么问题?

python linux bash python-2.x tty

12
推荐指数
2
解决办法
7066
查看次数

Python:如何启动完整进程而不是子进程并检索PID

我想要:

  1. 从我的进程(myexe.exe arg0)启动一个新进程(myexe.exe arg1)
  2. 检索这个新进程的PID(os windows)
  3. 当我使用TaskManager Windows命令"结束进程树"杀死我的第一个实体(myexe.exe arg0)时,我需要新的(myexe.exe arg1)不会被杀死...

我玩过subprocess.Popen,os.exec,os.spawn,os.system ......但没有成功.

另一种解释问题的方法:如果有人杀死了myexe.exe(arg0)的"进程树",如何保护myexe.exe(arg1)?

编辑:同样的问题(没有答案)在这里

编辑:以下命令不保证子进程的独立性

subprocess.Popen(["myexe.exe",arg[1]],creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP,close_fds = True)
Run Code Online (Sandbox Code Playgroud)

python windows process

10
推荐指数
2
解决办法
7818
查看次数

使用python启动一个独立的进程

这真是一个非常简单的问题,但我似乎无法找到任何解决方案.

我有一个python脚本,我想启动一个独立的守护进程.我想调用ym python脚本,启动这个系统托盘dameon,在数据库文件上做一些python魔法并退出,让系统托盘守护进程运行.

我试过os.system,subprocess.call,subprocess.Popen,os.execl,但它始终保持我的剧本还活着,直到我关闭系统托盘守护进程.

这听起来应该是一个简单的解决方案,但我无法得到任何工作.

编辑:Windows解决方案:http:os.startfile() //docs.python.org/library/os.html?highlight = startfile#os.startfile

有时放弃和询问意味着你只是在答案的尖端.

python windows subprocess daemon process

9
推荐指数
2
解决办法
1万
查看次数

脚本结束时不要终止 python 子进程

我看到了很多与此相反的问题,我觉得很奇怪,因为我无法阻止我的子进程关闭,但有没有办法调用 subprocess.Popen 并确保它的进程在调用 python 脚本后保持运行退出?

我的代码如下:

dname = os.path.dirname(os.path.abspath(__file__))
script = '{}/visualizerUI.py'.format(dname)
self.proc = subprocess.Popen(['python', script, str(width), str(height), str(pixelSize)], stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

这可以很好地打开进程,但是当我关闭脚本时(无论是因为它完成还是使用 Ctrl+C),它也会关闭 VisualizerUI.py 子进程,但我希望它保持打开状态。或者至少有这个选择。

我缺少什么?

python subprocess

9
推荐指数
1
解决办法
5851
查看次数

os.system和子进程调用之间的区别

我创建了一个程序,在本地服务器中创建Web体系结构,然后加载必要的浏览器以在localhost上显示html和php页面.

os.system调用会杀死python进程,但不会杀死其他进程 - 例如,httpd.exemysqld.exe

subprocess调用会终止httpd.exemysqld.exe程序,但会继续运行python代码,并且在subprocess调用后不会执行任何代码.

在执行python代码之后,我将如何杀死或隐藏所有必要的进程?

这是我的代码.

os.makedirs(dr + x + '/admin' + '/css')
dobj = open(dr + x + '/admin' + '/css' + '/style.css', 'w')
dobj.close()
del dobj
os.makedirs(dr + x + '/admin' + '/js')
os.makedirs(dr + x + '/admin' + '/img')
################################################################################
## THE OS SYSTEM CALLS CLOSE THE APP BUT OPEN THE PROCESSES
## AND THE SUBPROCESS CALLS CLOSE BOTH PROCESSES AND LEAVES THE …
Run Code Online (Sandbox Code Playgroud)

python subprocess

8
推荐指数
1
解决办法
5888
查看次数