首页 文章
  • 2 votes
     answers
     views

    为什么stdout对于使用shell = True vs False调用的subprocess.Popen表现不同?

    作为一个最小的例子,我想在远程和本地机器上运行“ping website.com”,并将两者的输出并行打印到本地stdout . 我使用多处理来调用两个函数并行运行 . 每个函数都使用subprocess.Popen(“ping ...”) . 如果使用shell = True调用Popen,则仅打印一台机器的输出,最后打印另一台机器的输出 . 如果使用shell = False调用Popen,则...
  • 1 votes
     answers
     views

    如何运行Python的子进程并将其保留在后台

    我看过很多关于我话题的帖子,但实际上我找不到解决问题的方法 . 我正在尝试在后台运行子进程,而不等待子进程执行 . 被调用的子进程是一个shell脚本,它执行许多不同的操作 . 这是我的一小段代码: print "Execute command:", full_command subprocess.Popen(full_command, stdin=None, stdout=N...
  • 6 votes
     answers
     views

    Python的Subprocess.Popen使用Shell = True . 等到它完成

    提交由完整文件路径构成的复杂 cmd 字符串到可执行文件,多个标志,参数,参数,输入和输出似乎需要我设置 shell=True 否则subprocess.Popen无法理解任何比简单路径更复杂的东西可执行文件(文件路径中没有空格) . 在我的例子中,我有一个很长的cmd: cmd = " '/Application/MyApp.app/Contents/MacOS/my_executab...
  • 2 votes
     answers
     views

    popen - 锁定还是不安全?

    我已经看到了一些popen()/ pclose()的实现 . 他们都使用了静态的pid列表,没有锁定: static int *pids; static int fds; if (!pids) { if ((fds = getdtablesize()) <= 0) return (NULL); if ((pids = malloc(f...
  • 15 votes
     answers
     views

    subprocess.wait()没有等待Popen进程完成(使用线程时)?

    当使用 subprocess.Popen() 从我的python脚本中使用线程生成同一应用程序的多个实例以使它们同时运行时,我遇到了一些问题 . 在每个线程中,我使用 popen() 调用运行应用程序,然后通过调用 wait() 等待它完成 . 问题似乎是 wait() -call实际上并没有等待进程完成 . 我只使用一个线程进行实验,并在进程启动时和完成时打印出文本消息 . 所以线程函数看起来...
  • 0 votes
     answers
     views

    从python中的管道子进程stdout读取行时的内存使用情况

    我只是想了解在处理subprocess.Popen()结果和逐行读取时内存使用方面在“背景”中发生的情况 . 这是一个简单的例子 . 给定以下脚本 test.py 打印"Hello"然后等待10s并打印"world": import sys import time print ("Hello") sys.stdout.flush() ti...
  • 0 votes
     answers
     views

    py2app中popen的权限问题

    我正在使用py2app捆绑一个使用anaconda python发行版的python脚本 . 由于py2app不适合需要用户输入的终端脚本,我有一个tkinter文件,py2app的setup.py启动,然后使用popen进一步启动我的.py脚本 . 在本地,这工作正常: import subprocess as sub command = "~/anaconda/bin/python ...
  • 1 votes
     answers
     views

    启动并写入Qt的终端

    我使用Qt在linux中编码 . 我知道使用popen或QProcess我可以从我的程序启动终端,但我该如何写入呢?我谷歌周围的人建议fork()和管道() . 我的目的是与终端进行ICMP ping,并在ping成功时停止 . 我用popen制作了,但是我无法停止ping过程,因此我的程序将无法运行 .
  • 0 votes
     answers
     views

    使用Stream线程和2个Popen进程安全地退出python3脚本

    我的脚本执行以下操作: 打开一个串口并从中读取信息 将上述信息传递给另一个二进制文件,以json格式提供信息 我使用 ReaderThread 类继承 threading.Thread 接收流以提供非阻塞实现 代码细分 我创建了两个进程来执行 actisense -r /dev/ttyUSB0 | analyzer -json actisense_process = Popen(['a...
  • 23 votes
     answers
     views

    用Popen打开一个进程并获得PID

    我正在研究一个漂亮的小功能: def startProcess(name, path): """ Starts a process in the background and writes a PID file returns integer: pid """ # Check if the pr...
  • 1 votes
     answers
     views

    测试Popen进程是否在等待输入

    我用POpen启动一个进程,在正常的环境下,它应该只是做一个工作并写入stdout然后捕获的东西 . 在特殊情况下,该过程将回退到交互模式并等待用户输入 . 如何检测到该情况并做出适当反应?
  • 15 votes
     answers
     views

    Python:在后台进程上使用popen poll

    我在后台运行一个很长的进程(实际上是另一个python脚本) . 我需要知道它何时完成 . 我发现 Popen.poll() 总是为后台进程返回0 . 还有另一种方法吗? p = subprocess.Popen("sleep 30 &", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) a...
  • -2 votes
     answers
     views

    退出用Popen启动的bash shell?

    我无法弄清楚如何关闭通过 Popen 启动的 bash shell . 我在Windows上,试图自动化一些ssh的东西 . 这通过git附带的 bash shell更容易实现,所以我通过以下方式通过 Popen 调用它: p = Popen('"my/windows/path/to/bash.exe" | git clone or other commands') p....
  • 0 votes
     answers
     views

    Python3:Popen通讯

    我是游戏玩家和编码员 . 在我的一个游戏中,我需要一台服务器,所以,和朋友一起买了一台 . 但是,这位朋友并不了解编码的任何内容,尤其是Linux的bash,所以他无法打开/关闭我们的服务器,他也无法解决它 . 所以我决定制作一个帮助他使用我们服务器的程序 . 关键是服务器是用java编码的(它是一个jar),没有外部命令我无法访问它 . 所以,我花了很多文档,所有这些文档都对我说:“你必须使用子...
  • 1 votes
     answers
     views

    将输入传递给Popen进程

    我无法找到适合下列情况的解决方案 . 所以,基本上我想管道两个shell命令,并将一些输入数据(这里是 mypassword )传递给第二个 . 这里有一些代码证明了这个问题: import subprocess import shlex args1 = shlex.split("find /home/vasya/rmps/ -name *.rpm") ps = subpro...
  • 18 votes
     answers
     views

    popen()可以像pipe()fork()一样制作双向管道吗?

    我正在C中的模拟文件系统上实现管道(主要是C) . 它需要在主机shell中运行命令,但在模拟文件系统上执行管道本身 . 我可以通过 pipe() , fork() 和 system() 系统调用来实现这一点,但我更喜欢使用 popen() (它处理创建管道,分支进程,并将命令传递给shell) . 这可能是不可能的,因为(我认为)我需要能够从管道的父进程写入,在子进程端读取,从子进程写回输出,最...
  • 3 votes
     answers
     views

    如何通过subprocess.Popen获取PID自定义环境变量?

    使用Python,如何使用修改后的环境变量运行子进程并获取其PID?我假设subprocess.Popen()是沿着正确的轨道...... 在shell(bash)中,我会这样做: MY_ENV_VAR=value ./program_name arg1 arg2 etc & 这在后台运行 program_name ,传入"arg1"和"arg2"...
  • 2 votes
     answers
     views

    Python subprocess.popen和rdiff-backup

    我想在python中创建一个rdiff-backup包装器程序,用于将windows机器备份到linux服务器 . 我想在包装器程序中处理rdiff-backup的输出 . 但是当使用子进程模块执行rdiff-backup并将stdout和stderr传递给包装器时,stdout总是最终成为管道的末尾 . 当使用子进程而没有管道时,stdout和stderr在控制台中以正确的顺序打印 . 当我在本...
  • 13 votes
     answers
     views

    新手python子进程:“写入错误:断管”

    感谢以下有用的建议: 所以我似乎已经修好了 单独命令到Popen的单独调用 stderr = subprocess.PIPE作为每个Popen链的参数 . 新代码: import subprocess import shlex import logging def run_shell_commands(cmds): """ Run command...
  • 10 votes
     answers
     views

    为什么shell = True吃我的subprocess.Popen stdout?

    似乎在链的第一个进程中使用shell = True会以某种方式从下游任务中删除stdout: p1 = Popen(['echo','hello'], stdout=PIPE) p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE) p2.communicate() # outputs correctly ('hello\n', None) 使第一个进程使...
  • 19 votes
     answers
     views

    为什么带有shell = True的subprocess.Popen()在Linux与Windows上的工作方式不同?

    当使用 subprocess.Popen(args, shell=True) 运行“ gcc --version ”(仅作为示例)时,在Windows上我们得到: >>> from subprocess import Popen >>> Popen(['gcc', '--version'], shell=True) gcc (GCC) 3.4.5 (mingw-...
  • 3 votes
     answers
     views

    subprocess.Popen:stdin,stdout,stderr的不同缓冲?

    我需要在对行缓冲的Popen调用中设置 stderr 流 . 我发现了 bufsize 参数,但它适用于所有 stdin , stdout 和 stderr 文件 . 如何调整每个文件的缓冲区别?
  • 1 votes
     answers
     views

    调用subprocess.Popen并将stdin,stdout和stderr设置为subprocess.PIPE更改终端的行为

    我最近开发了一个Python脚本,以利用工具通过JMX从JVM中检索指标 . 父进程( p1 )使用以下代码启动另一个进程( p2 ) . p2 = subprocess.Popen( ['java', '-jar', '/path/to/jmxterm-1.0-alpha-4-uber.jar', '-l', url, '-u', username, '-p', passwor...
  • 1 votes
     answers
     views

    Python subprocess.Popen不适用于stdout

    我需要实现一个外部应用程序来计算Modbus通信的CRC值 . 可执行文件需要输入字符串并返回如下输出: CRC16 = 0x67ED / 26605 CRC16 (Modbus) = 0x7CED / 31981 我调用该程序,然后手动输入输入 . p = Popen(["some_file.exe", "-x"], stdin=PIPE) p.comm...
  • 0 votes
     answers
     views

    使用Python popen合并stdout和stderr并检测stderr是否为空

    我想用popen运行一个子进程,它可以向stdout和stderr发送消息,但是这个子进程将继续沿着它的快乐方式,尽管写入stderr . 我想将stdout和stderr一起流,所以我按照它发生的确切顺序得到输出(或者我在技术上刷新了) . 然后,我想记录完整的结果集 . 但我也想独立知道stderr是否为空 . 如果不是,我将抛出异常 . 我很清楚如何将它们分开或合并在一起,但我怎么可能同时做...
  • 0 votes
     answers
     views

    Python子流程交互:监控(stdout)通信(stdin)2.7.5

    基本上我正在尝试使用子进程库(Popen)自动化一些Linux安装程序(和其他任务) . 在过去,我已经能够打开这样的流程: self.process = subprocess.Popen( self.executable, stdout=subprocess.PIPE, ...
  • -1 votes
     answers
     views

    Python:如何从windows下的python脚本启动一个不可见的python控制台?

    我需要从windows下的python脚本启动一个python控制台 . 必须在文本框上写入此控制台的输出 . 我正在使用subprocess'因为python 2可以是python 2或3,取决于用户的选择,所以我不能使用code.InteractiveConsole . 现在,我用subprocess.Popen启动python,stdin = PIPE,stdout和stderr是两个文件子...
  • 1 votes
     answers
     views

    Python subprocess.Popen stdin干扰stdout / stderr

    对此感到非常困惑 . 使用Popen时,如果只使用stdout或stderr,则以下代码有效: def run(self): self.externalProcess = subprocess.Popen(['./external_process.out 1>&2'], shell=True, stderr=subprocess.PIPE) while self.ex...
  • 6 votes
     answers
     views

    为什么将stdin提供给subprocess.Popen会导致写入stdout的内容发生变化?

    我正在使用Python的subprocess.Popen使用主机操作系统的二进制客户端执行一些FTP . 出于各种原因,我无法使用ftplib或任何其他库 . 如果我将stdin处理程序附加到Popen实例,则二进制文件的行为似乎会发生变化 . 例如,使用XP的ftp客户端,它接受要发出的命令的文本文件: >>>from subprocess import Popen, PIPE...
  • 30 votes
     answers
     views

    Python Popen:同时写入stdout和日志文件

    我正在使用Popen调用一个shell脚本,该脚本不断将其stdout和stderr写入日志文件 . 有没有办法连续同时输出日志文件(到屏幕),或者让shell脚本同时写入日志文件和标准输出? 我基本上想在Python中做这样的事情: cat file 2>&1 | tee -a logfile #"cat file" will be replaced with ...

热门问题