system函数调用exe文件返回的值如何重定向到变量中
2个回答
展开全部
根据一楼的理解,我写了一个 获取系统可用内存的简单代码,你看一下是否符合你的要求:
#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;
}
#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;
}
展开全部
只是用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。
想问的其实是这个问题:
“一长串的命令”,直接在主机上执行,屏幕输出是一串整数,想达到的目的是把这个整数赋给程序内一个变量,同时不要在屏幕显示“一长串的命令”的输出
系统有一个环境变量$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。
想问的其实是这个问题:
“一长串的命令”,直接在主机上执行,屏幕输出是一串整数,想达到的目的是把这个整数赋给程序内一个变量,同时不要在屏幕显示“一长串的命令”的输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询