作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个运行以下命令的 C 程序:
system("sudo grep '' /sys/class/dmi/id/board_*")
并在命令行上给出输出。
我希望将输出存储在 C 程序中的某个变量中,以便我可以过滤 board_serial
。
最佳答案
看看popen 。下面是一个简单的示例,说明如何使用它来捕获程序输出:
#include<stdio.h>
int main()
{
FILE *p;
p = popen("ls -l", "r");
if(!p) {
fprintf(stderr, "Error opening pipe.\n");
return 1;
}
while(!feof(p)) {
printf("%c", fgetc(p));
}
if (pclose(p) == -1) {
fprintf(stderr," Error!\n");
return 1;
}
return 0;
}
但是,看起来您只是想从文件中读取一些值,对吗?我宁愿打开( fopen()
)其中包含值的文件,并将这些值读取到我的 C 程序中的变量中。尝试这样的事情(只是一个简单的例子):
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int main()
{
FILE *fp;
char result[MAX];
int i;
char c;
fp = fopen("/sys/class/dmi/id/board_name", "r");
if(!fp) {
fprintf(stderr, "Error opening file.\n");
return 1;
}
i = 0;
while((c = fgetc(fp)) != EOF) {
result[i] = c;
i++;
}
result[i] = '\0';
printf("%s", result);
i = atoi(result);
printf("%d", i);
if (fclose(fp) == -1) {
fprintf(stderr," Error closing file!\n");
return 1;
}
return 0;
}
关于C程序(Linux): get command line output to a variable and filter data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005902/
我是一名优秀的程序员,十分优秀!