system函数调用exe文件返回的值如何重定向到变量中

 我来答
520vim
推荐于2016-05-14
知道答主
回答量:19
采纳率:0%
帮助的人:15.6万
展开全部
根据一楼的理解,我写了一个 获取系统可用内存的简单代码,你看一下是否符合你的要求:
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
int main(int argc, char *argv[])
{
char free_mem[30];
FILE *fp;
fp = popen("cat /proc/meminfo | awk '{ if (NR == 2) print $2}'","r");
if ( NULL == fp )
{
printf("Create failed...\n");
return 1;
}
fgets(free_mem,sizeof(free_mem),fp);
pclose(fp);
long mem;
mem = atoi(free_mem);

printf(" Free_mem is : %ld KB \n ",mem);
return 0;
}
lbinzx
2012-03-07
知道答主
回答量:12
采纳率:0%
帮助的人:9.8万
展开全部
只是用echo $HZ 举例:

系统有一个环境变量$HZ,值为100
root@host#echo $HZ
100

从C程序中执行 system("echo $HZ") 把 $HZ 的值赋给 int t

main()
{
int t = system("echo $HZ");

if (t == 100)
printf("*** t=100 ***\n");
else
printf("*** t!=100 ***\n");

}

这样其实没有把system调用的命令输出的值赋给t,而是system本身的返回值。

后来测试发现t其实为0,这说明 system("一长串的命令") 的返回值是0,或者根本没有返回值?并没有把“一长串的命令”本身的输出值赋值给int t。

想问的其实是这个问题:
“一长串的命令”,直接在主机上执行,屏幕输出是一串整数,想达到的目的是把这个整数赋给程序内一个变量,同时不要在屏幕显示“一长串的命令”的输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式