C程序中怎么获取shell命令的返回值

C程序中怎么获取shell命令的返回值,第1张

示意流程如下:

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 = 2

resultfile = "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命令的返回值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9338930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存