利用system函数调用shell命令,只能获取到shell命令的返回值,而不能获取shell命令的输出结果(或许有一个办法:把标准输出重定向到内存位置。但是设置起来可能比较麻烦。)
popen函数可以完成上述要求,并且用起来比较简单。
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- void main(int argc, char **argv)
- {
- char command[1024] = "lvs -o,lv_uuid ";
- char buffer[64] = {0};
- strcat(command, argv[1]);
- strcat(command, " |grep -v 'LV UUID'");
- FILE *fp = popen(command, "r");
- fgets(buffer, sizeof(buffer), fp);
- printf("%s", buffer);
- pclose(fp);
- }
此函数用于查看某个logical volume的uuid号,指令“lvs”来自于“lvm2”软件。
阅读(9390) | 评论(0) | 转发(0) |