示意流程如下:
return_code = system("shell command") ;
if (return_code == 1)
do something ;
else if (return_code == 2)
do something ;
else
do something ;
其实,并不是你想的那样,因为testpy,也不是实时输出,只有在每次输出,清空一下stdout才能看到你想看到的效果。
testpy
import sysimport timefor i in range(1,10): print i sysstdoutflush() timesleep(1)
import subprocesssubp=subprocessPopen('python testpy',shell=True,stdout=subprocessPIPE)c=subpstdoutreadline()while c: print c c=subpstdoutreadline() print subpreturncode
这样,你观察很明显,如果你将sysstdoutflush(),删除,你会发现都是最后一刻才输出,因为print时代缓冲的。
shell中,$ 就是上一个执行命令或函数的返回码,
例如
执行命令xxxxx
echo $
就输出了执行命令xxxxx的返回码,当然也可以把$保存到一个变量中,用于后续的计算或者其他判断逻辑。
FSO(Filesy System Object) *** 作文件,要重定向的话,需要以命令行形式执行脚本并在命令行里指定要重定向到的文件。
命令行方式如下:cscript 脚本名称 >> "D:\Program Files\diffcount\myresulttxt"
脚本里直接写入文件的方式(FSO):
只有用Exec执行命令,才能获取输出流并写入文件。
Const ForWriting = 2resultfile = "D:\Program Files\diffcount\myresulttxt"
Set fso = CreateObject("ScriptingFileSystemObject")
Set myfile = fsoOpenTextFile(resultfile, ForWriting, True)
Set WshShell = WScriptCreateObject("WScriptShell")
Set oExec = WshShellExec(shell_cmd)
Set oStdOut = oExecStdOut
Do Until oStdOutAtEndOfStream
myfileWriteLine oStdOutReadLine
Loop
myfileClose
执行“nano testsh”创建一个新的shell脚本。
脚本testsh的内容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
给新创建的testsh的脚本赋可执行权限,命令为“chmod 755 testsh”。
执行'/testsh "xiao wang"'命令,可以看到自己编写脚本的结果“the xiao wang are great man!”。
5
"name=$1"中$1为系统提供的位置参数,$0代表程序的名称,[$1/$2/]从1开始为传递的参数。
6
linux系统除了提供位置参数还提供内置参数,内置参数如下:
$# ----传递给程序的总的参数数目
$ ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$ ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 $0 ----当前程序的名称
$@----以"参数1" "参数2" 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
以上就是关于C程序中怎么获取shell命令的返回值全部的内容,包括:C程序中怎么获取shell命令的返回值、命令,怎样做到及时的获取shell命令输出内容、如何获取shell函数的返回值及shell命令的返回值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)