- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我阅读了尽可能多的与 subprocess.check_output() 相关的问题,但仍然很难找出问题所在。
如果我在 shell 中执行 kill -l 1
,我会得到 1 对应的信号名称,即 HUP
。我需要在 python 脚本中实现相同的行为,因此我使用:
>>> subprocess.check_output(['kill', '-l', '1'])
b'HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT\nCHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS\n'
子进程似乎忽略了参数列表中的“1”,而是执行 kill -l
。
我尝试了不同的版本,参数作为列表或字符串,使用 shell 选项 True 和 False,但似乎都不起作用。
有什么想法可能是什么原因吗?在 Ubuntu14.04 上使用 python3.4。
谢谢!
最佳答案
可能的原因:shell 中的 kill
命令正在执行内置的 shell(大多数 shell 都有一个,因为当您有失控的 fork 炸弹时,您需要能够在不启动进程的情况下杀死等),而 check_output
(默认情况下不在 shell 中执行)正在运行 PATH
中找到的 kill
可执行文件(通常是 /bin/kill
,但并非总是如此,在 bash
中运行 type -P Kill
会告诉您该可执行文件在哪里)。
很可能,内置支持您正在寻找的开关,而可执行文件则不支持。在 bash
中,尝试运行 type -P kill
,然后显式运行 /full/path/to/kill -l 1
以查看是否kill
check_output
发现实际上支持该调用。 kill
的不同实现之间通常存在细微差别。
对此问题的最佳解决方案可能是避免昂贵且无意义的 subprocess
启动并检查信号的 Python 定义。例如,在 Python 3.5 中,构建从 Python 已知的信号到其 Python 名称的映射是很简单的:
import signal
sigdict = {sig.value: sig.name for sig in signal.Signals}
print(sigdict[1])
CTRL_BREAK_EVENT # <-- The output on my Windows box. On your machine, it would probably be SIGHUP
在旧版 Python 中,名称不是 enum
,您可以使用模块的 dir
来使用类似的代码,过滤其 __module__
是 signal
,其值是构造映射的整数。
关于Python subprocess.check_output() 似乎忽略参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401142/
我正在玩子流程库。我可以执行 v = subprocess.check_output("ls") 而且效果很好。但是,当我通过 SSH 连接到一台机器上并想要执行 hadoop 命令时, v = su
我有使用 subprocess.check_output 的代码很好,我不得不重新安装 Ubuntu 16.04,然后它提示它现在找不到属性 check_output。 import subproce
我正在尝试为我正在编写的 configure.py 脚本检索 CPU 功能列表。在 shell 中,我执行如下操作: $ cat /proc/cpuinfo|grep flags|head -1|cu
#!/bin/python import subprocess import traceback import logging output_file = "/Users/abhabhin/Deskt
我在此处执行此代码时遇到问题 subprocess.check_output(['ps -ef | grep ftp | wc -l'],env=environ,shell=True) 当我从终端执行
首先,我阅读了尽可能多的与 subprocess.check_output() 相关的问题,但仍然很难找出问题所在。 如果我在 shell 中执行 kill -l 1,我会得到 1 对应的信号名称,即
我正在使用python来运行Youtube-dl ,一款用于从 YouTube 和其他网站下载视频的软件。我专门用它从 YouTube 视频下载音频。我可以通过使用 check_output() 执行
我正在使用 subprocess.check_output 运行 Xyce(SPICE 模拟器)仿真,因为我想使用它的结果进行进一步分析。 这是我使用的代码: x=subprocess.check_o
我正在尝试在 Python 2.7.5 中运行以下代码: output = subprocess.check_output(commandList) print (len(output)) 我的命令列
我正在通过 subprocess.check_output() 执行命令,因为我希望它的 o/p 存储在缓冲区中。 现在,在执行此操作时,如果命令失败或出现任何错误,则会给我的整个应用程序带来问题。
当我在 Subprocess 模块中使用 check_output 时,我从 Python shell 中得到了这个输出错误: AttributeError: 'module' object has
我正在尝试使用 mediainfo 读取视频文件的持续时间。这个 shell 命令有效 mediainfo --Inform="Video;%Duration/String3%" file 并产生类似
我在使用 subprocess.check_output() 时遇到了一些奇怪的问题。起初我只是使用 subprocess.call() 并且一切正常。然而,当我简单地将 call() 切换为 che
我想调用一个脚本,将字符串的内容通过管道传输到它的标准输入并检索它的标准输出。 我不想接触真正的文件系统,所以我不能为它创建真正的临时文件。 使用 subprocess.check_output 我可
prules=subprocess.check_output("perl ruleFinder.pl "+datasetfile+" "+myrulepath, shell=True)##call a
用crontab执行python脚本时,脚本缺少环境变量。 该脚本调用一个可执行文件,某些 Linux 发行版在 /usr/bin 下提供,而其他在 /sbin 下提供。 subprocess.che
我在我的 Raspberry Pi 3 上运行下面的代码行,并期望向用户显示输出。 (这只是我学习曲线中的一个测试) #test.py import subprocess output = subpr
我正在尝试获取的输出 dmesg | grep -i 'bios' 我已经试过了: dmsg = subprocess.check_output("dmesg | grep -i 'bios'").d
我正在使用 subprocess.check_output 调用 MS DOS 命令行应用程序以从应用程序返回 stdout 字符串。 check_ouput 的返回是关于刚刚运行的命令的信息,一个新
我试图捕获 check_output 的返回值,而不是让它自动打印到命令行。不幸的是,我的解决方案不起作用,我不知道为什么。我已经包含了我的代码及其输出: #!/usr/bin/env python3
我是一名优秀的程序员,十分优秀!