草庐IT

python - Popen 等待子进程,即使直接子进程已经终止

我在Windows8/XP上使用Python2.7。我有一个程序A使用以下代码运行另一个程序B:p=Popen(["B"],stdout=PIPE,stderr=PIPE)stdout,stderr=p.communicate()returnB运行批处理脚本C。C是一个长时间运行的脚本,即使C尚未完成,我也希望B退出。我使用以下代码(在B中)完成了它:p=Popen(["C"])return当我运行B时,它按预期工作。但是,当我运行A时,我希望它在B退出时退出。但是即使B已经退出,A也会等到C退出。关于正在发生的事情以及可能的解决方案有什么想法吗?不幸的是,将A更改为看起来像B的显而易

python - 如何使用 Python Popen 处理多个参数?

我正在尝试制作一个带有按钮的PyGtkGui。当用户按下此按钮时,gnome-terminal会提示用户输入密码。然后它将克隆这个Gitrepository用于geditJQuery片段。然后,它将js.xml文件复制到/usr/share/gedit/plugins/snippets/js.xml最后,它强行删除了Git存储库。命令:gnome-terminal-xsudogitclonegit://github.com/pererinha/gedit-snippet-jquery.git&&sudocp-fgedit-snippet-jquery/js.xml/usr/share/

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

我在后台运行一个很长的进程(实际上是另一个python脚本)。我需要知道它什么时候完成。我发现Popen.poll()总是为后台进程返回0。还有其他方法吗?p=subprocess.Popen("sleep30&",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)a=p.poll()print(a)以上代码从不打印None。 最佳答案 你不需要使用shellbackgrounding&语法,因为subprocess会自己在后台运行进程只要正常运行命令,然后等待Pope

python - 将 Ctrl-C 发送到通过 subprocess.Popen 和 ssh 启动的远程进程

如何向Popen()对象中的多个ssh-t进程发送Ctrl-C?我有一些Python代码可以启动远程主机上的脚本:#kickoff.py#icall'ssh'w/the'-t'flagsothatwhenipress'ctrl-c',itget's#senttothescriptontheremotehost.otherwise'ctrol-c'wouldjust#killthingsonthisend,andthescriptwouldstillberunningonthe#remoteservera=subprocess.Popen(['ssh','-t','remote-host

php - popen 延迟后返回输出?

我正在使用popen()执行FFMPEG以获得过程的结果。我这样做的主要原因是我可以流式传输恒定输出并构建进度条。问题是流程开始了,我收到了一些初始信息。然而,直到该过程完成后,其余信息才会出现。因此,从本质上讲,在流程进行时间隔出现的其余输出(进度输出)在流程之前被延迟,并且在流程完成后立即全部出现,这是无用的。我需要输出不断出现,这样我才能更新进度条。如果我将2>&1更改为2>stderr.txt,该文本文件始终接收输出,但我想在php中接收,因为许多进程可能正在运行。有人对解决这个问题有什么想法吗?似乎没有人能弄清楚这一点……这让我发疯了!如果有人帮助我解决这个问题(并实际解决它

python - 无法使用 python --version 在 linux 上使用 Popen 获取 python 版本

我正在编写以下代码。#!/usr/bin/pythonimportsubprocessimportoscmd='python--version'stdout=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).stdoutver=stdout.read()此代码只是在控制台上打印python版本,变量ver没有获得任何值。谁能帮我理解为什么这不起作用?我有类似的代码来检查节点上是否正在运行进程。cmd='ps-ef|grepcmserver|grep-vgrep'stdout=subprocess.Popen(cmd,shel

c - 使用 popen() 打开的文件描述符上的 pclose() 返回 errno 10(无子进程)

我正在运行linux并尝试执行以下操作:在当前目录运行ls(使用popen)将结果输出到缓冲区(使用来自管道描述符的fread)关闭管道(使用pclose)。一切正常(缓冲区已正确填充ls结果)但是当我检查时pclose()结果它返回-1并且errno设置为10(无子进程)。不知道为什么这正在发生,但我不能忽视它(除非对为什么会发生这种情况有合理的解释)。我的代码:FILE*lsoutput=NULL;lsoutput=popen("ls-ltr","r");if(readFromPipeOrFile(lsOutput,pSendBuf,pSendActualSize)==-1){pr

c++ - popen 上的死锁

我正在Linux(嵌入ARM)下编写一个运行两个线程的小应用程序。我在一个函数中做了一个“popen”,这为进入该函数的第二个线程创建了一个死锁。但是,最先进入该函数的第一个线程仍然正确运行。这里是一些代码示例:pthread_mutex_tmutex1=PTHREAD_MUTEX_INITIALIZER;intsendCommand(conststd::string&command,std::string&answer){FILE*fd;//Filedescriptortocommandoutputcharanswer_c[COMMAND_BUFFER_SIZE];//Theansw

php - MySQL 代码导致 PHP 脚本在 popen/exec 崩溃

我在Ubuntu14.04服务器上有以下PHP5.6.19代码。此代码只是连接到MySQL5.6.28数据库,稍等片刻,启动自身的另一个进程,然后退出。注意:这是完整的脚本,目的是演示问题-它没有做任何有用的事情。classDatabaseConnector{constDB_HOST='localhost';constDB_NAME='database1';constDB_USERNAME='root';constDB_PASSWORD='password';publicstatic$db;publicstaticfunctionInit(){if(DatabaseConnector:

c - 如何在不使用 system、popen、fork、exec 的情况下在 C/Linux 中执行外部命令?

想知道有没有什么好的方法可以不用system(),popen(),fork(),exec()在Linux环境下用C语言执行外部命令?我无法使用这些功能的原因是我的主应用程序已经用完了我嵌入式板中的大部分系统资源(即内存)。如果我进行fork,开发板将无法创建我的主应用程序的副本。从我在一本书上读到,system()和popen()实际上都在底层使用fork(),所以我也不能使用它们。我目前唯一的想法是在运行我的主应用程序之前创建一个进程并使用IPC(管道或套接字)让新进程知道它需要使用system()或popen()运行哪些外部命令并返回完成后将结果返回给我的应用程序。