php通过popen获取的一个命令的返回值如何分析出来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php通过popen获取的一个命令的返回值如何分析出来相关的知识,希望对你有一定的参考价值。
如运行
$cmd = "export LANG=C; /usr/bin/sudo /sbin/vgdisplay";
$info = popen($cmd,'r');
echo $info;
得出的是Resource id #17
就是用php的popen()函数运行了一个linux命令,把这个命令得到的结果$info输出出来是Resource id #17,如何把Resource id #17给解析出来。在linux里运行这个命令显示的是
--- Volume group ---
VG Name localhost
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 232.64 GB
PE Size 4.00 MB
Total PE 59557
Alloc PE / Size 59557 / 232.64 GB
Free PE / Size 0 / 0
VG UUID xhGwsx-3SDn-2mgR-XBrE-Nwtt-uJDM-lW7MB1
popen() 函数打开进程文件指针。
popen(command,mode)
参数说明
command 必需。规定要执行的命令。
mode 必需。规定连接模式。 可能的值:
r: 只读。
w: 只写 (打开并清空已有文件或创建一个新文件)
打开一个指向进程的管道,该进程由派生指定的 command 命令执行而产生。
返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。
若出错,则返回 false。
例如:
<?php
$file = popen("/bin/ls","r");
//一些要执行的代码
pclose($file);
?> 参考技术B 1、执行外部程序。语法: string exec(string command, string [array], int [return_var]);返回值: 字符串函数种类: 操作系统与环境内容说明本函数执行输入 command 的外部程序或外部指令。它的返回字符串只是外部程序执行后返回的最后一行;若需要完整的返回字符串,可以使用 PassThru() 这个函数。要是参数 array 存在,command 会将 array 加到参数中执行,若不欲 array 被处理,可以在执行 exec() 之前呼叫 unset()。若是 return_var 跟 array 二个参数都存在,则执行 command 之后的状态会填入 return_var 中。值的注意的是若需要处理使用者输入的资料,而又要防止使用者耍花招破解系统,则可以使用 EscapeShellCmd()。相关函数:system() PassThru() popen() EscapeShellCmd()
参考技术C proc_open 用这个也可,
<?php
$handle = popen("tail -f /etc/httpd/logs/access.log 2>&1", 'r');
while(!feof($handle))
$buffer = fgets($handle);
echo "$buffer<br/>\n";
ob_flush();
flush();
pclose($handle);
?>本回答被提问者采纳 参考技术D 不明白你想达到什么功能。
python cmd命令调用
关于python调用cmd命令:
主要介绍两种方式:
1.python的OS模块。
OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。
os.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig").
OS.popen带返回值的,如何获取返回值。如
p=os.popen(cmd)
print p.read().得到的是个字符串。
这两个都是用当前进程来调用,也就是说它们都是阻塞式的。
2.管道subprocess模块。
运行原理会在当前进程下面产生子进程。
sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
sub.wait()
print sub.read()
以上是关于php通过popen获取的一个命令的返回值如何分析出来的主要内容,如果未能解决你的问题,请参考以下文章