c++如何获取dos命令的返回值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++如何获取dos命令的返回值相关的知识,希望对你有一定的参考价值。
***************c++内容*****************
char* p;
system("date /t");
***************c++内容*****************
在上面的c++程序里面调用了简单的dos命令显示了日期,比如结果是 "2013/08/11 周日",如何将它给赋值给变量p?
直接获取system的返回值。
1、system函数:
原型:int system(const char * command);
功能:执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名;
说明:在windows系统中,system函数直接在控制台调用一个command命令。在Linux/Unix系统中,system函数会调用fork函数产生子进程,由子进程来执行command命令,命令执行完后随即返回原调用的进程;
头文件:stdlib.h;
返回值:命令执行成功返回0,执行失败返回-1。
2、例程:
#include<stdlib.h>
int main()
system("del C:\\\\123.txt");//在控制台中,执行命令del C:\\\\123.txt,删除C盘目录下的123.txt文件
return 0;
参考技术A 先输出到一个文件,然后从文件中读入:
system("date /t >data.txt");
或者使用popen,原理都一样:
char buffer[64] = 0;
FILE *fp = popen(command, "r");
fgets(buffer, sizeof(buffer), fp);
printf("%s", buffer);
pclose(fp);
参考网址:http://www.yc-edu.org/C__peixun/2165.html 参考技术B 示意流程如下:
return_code = system("shell command") ;
if (return_code == 1)
do something ;
else if (return_code == 2)
do something ;
else
do something ;
shell脚本如何获取状态码返回值,如ok或error
使用shell脚本获取"code":"ok","resultXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<result>\n... 里的ok或error
"code":"ok","resultXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<result>\n 这个值已被赋值给RESPONSE
现在使用echo "$RESPONSE" | awk 'printf $1'获取的不对,求大神赐教
code的值是个变量,可能的值也许不止ok或error
用awk是可以的,你需要用-F指定分隔符,然后再输出第几个串,楼上用的双引号作为分隔符,然后输出第四个串,应该是没问题的。
或者你也可以用其他语言,比如php,json_decode函数将这个穿转成数组,然后输入code的值,更加直观。 参考技术A echo "$RESPONSE" | awk -F\" 'print $4'追问
运行了下,没有打印出来
追答root@localhost:~/xly# cat 1
RESPONSE='"code":"ok","resultXml":"\n\n'
echo $RESPONSE
echo "$RESPONSE" | awk -F\" 'print $4'
root@localhost:~/xly# sh 1
"code":"ok","resultXml":"\n\n
ok
echo "$RESPONSE" | awk -F '"' 'print $4'
以上是关于c++如何获取dos命令的返回值的主要内容,如果未能解决你的问题,请参考以下文章