PHP借用$cmd运行程序后,怎么关闭
PHP借用$cmd运行程序后,如何关闭?
我想用PHP运行某exe程序(不要CRON等计划程序,PHP里还有其他内容。这里方便测试,以记事本为例),在其打开3秒后,执行关闭。
如何操作?
是否可以调用任务管理器将其关闭?求解决代码。谢谢。
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php $cmd = 'C:\WINDOWS\system32\notepad.exe'; system($cmd); sleep(3); //$cmd1 = 'C:\WINDOWS\system32\taskmgr_original.exe'; //system($cmd1); ?>
------解决方案--------------------
- PHP code
<?php $handle = popen('C:\WINDOWS\system32\notepad.exe', "r"); pclose($handle); ?> <br><font color="#e78608">------解决方案--------------------</font><br>popen ― 打开进程文件指针<br><br>说明<br>resource popen ( string $command , string $mode )<br>打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。 <br><br>返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。 <br><br>如果出错返回 FALSE。 <br><br>Note: <br><br>如果需要双向支持,使用 proc_open()。 <br><br><br><br>Example #1 popen() 例子<br><br><?php <br />$handle = popen("/bin/ls", "r");<br>?> <br><br>Note: <br><br>如果未找到要执行的命令,会返回一个合法的资源。这看上去很怪,但有道理。它允许访问 shell 返回的任何错误信息: <br><br><?php <br />error_reporting(E_ALL);<br><br>/* 加入重定向以得到标准错误输出 stderr。 */<br>$handle = popen('/path/to/spooge 2>&1', 'r');<br>echo "'$handle'; " . gettype($handle) . "\n";<br>$read = fread($handle, 2096);<br>echo $read;<br>pclose($handle);<br>?> <br><br><br> <br><font color="#e78608">------解决方案--------------------</font><br>
------解决方案--------------------
popen返回的是notepad.exe在php环境下的进程指针,这个指针只能用于读取和输出数据给notepad,pclose关闭的只是这个指针而不是notepad本身.
我也不清楚如何关闭notepad,但是我想应该从windows的编程基础中查找如何获取任务管理器中的进程,然后用system函数去调用windows的关闭程序
------解决方案--------------------
popen是单向的,用proc_open吧
试试看
- PHP code
/** * windows only */ $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w") ); $cwd = 'C:\WINDOWS\system32'; $process = proc_open('notepad.exe', $descriptorspec, $pipes, $cwd); $s = proc_get_status( $process );//得到的信息都是父进程cmd.exe的状态,而非子进程notepad.exe的.所以不能直接kill掉这个process id sleep( 3 ); exec('taskkill /PID '.$s['pid'] . ' /T'); //树型删除,删除所有父进程与对应的子进程.原来以为子进程id必定大于父进程,写了一通代码,后来发现不是,且找到了这个命令 proc_close( $process ); <div class="clear"> </div>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

要打开 web.xml 文件,可以使用以下方法:使用文本编辑器(如记事本或 TextEdit)使用集成开发环境(如 Eclipse 或 NetBeans)使用命令行编辑命令(Windows:notepad web.xml;Mac/Linux:open -a TextEdit web.xml)

语言多线程可以大大提升程序效率,C 语言中多线程的实现方式主要有四种:创建独立进程:创建多个独立运行的进程,每个进程拥有自己的内存空间。伪多线程:在一个进程中创建多个执行流,这些执行流共享同一内存空间,并交替执行。多线程库:使用pthreads等多线程库创建和管理线程,提供了丰富的线程操作函数。协程:一种轻量级的多线程实现,将任务划分成小的子任务,轮流执行。

高效读取Windows系统日志:反向遍历Evtx文件在使用Python处理Windows系统日志文件(.evtx)时,直接读取会从最早的�...

解决 Photoshop 启动慢的问题需要多管齐下,包括:升级硬件(内存、固态硬盘、CPU);卸载过时或不兼容的插件;定期清理系统垃圾和过多的后台程序;谨慎关闭无关紧要的程序;启动时避免打开大量文件。

多线程是计算机编程中的重要技术,用来提升程序执行效率。在 C 语言中,有多种实现多线程的方式,包括线程库、POSIX 线程和 Windows API。

如何在浏览器上使用JavaScript区分关闭标签页和关闭整个浏览器?在日常使用浏览器的过程中,用户可能会同时�...

掌握Debian系统日志监控是高效运维的关键,它能帮助您及时了解系统运行状况,快速定位故障,并优化系统性能。本文将介绍几种常用的监控方法和工具。利用sysstat工具包监控系统资源sysstat工具包提供了一系列强大的命令行工具,用于收集、分析和报告各种系统资源指标,包括CPU负载、内存使用、磁盘I/O、网络吞吐量等。主要工具包括:sar:全面的系统资源统计工具,涵盖CPU、内存、磁盘、网络等。iostat:磁盘和CPU统计信息。mpstat:多核CPU的统计信息。pidsta
