博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux的C获取shell执行返回的结果
阅读量:5897 次
发布时间:2019-06-19

本文共 918 字,大约阅读时间需要 3 分钟。

linux下通过C执行命令的时候一半都是使用system()方法,但是该方法执行命令返回的值是-1或0,而有时候我们需要得到执行命令后的结果。可以使用管道实现

输出到文件流的函数是popen(),例如

FILE *isr;

isr = popen("ls -l","r"); ls -l命令的输出通过管道读取("r"参数)到isr

下面是演示例子,列出当前可用的loop设备,(必须是root权限才可以执行losetup -f)

#include 
#include
#include
#include
#include
char* cmd_system(const char* command);int main(){ //char str[20]={"0"};     char* result = cmd_system("losetup -f");     //通过该方法可以将char*转换为char数组 //strcpy(str,result); printf("The result:%s\n",result); return 0;}char* cmd_system(const char* command){ char* result = ""; FILE *fpRead; fpRead = popen(command, "r"); char buf[1024]; memset(buf,'\0',sizeof(buf)); while(fgets(buf,1024-1,fpRead)!=NULL) {        result = buf; } if(fpRead!=NULL) pclose(fpRead); return result;}

执行结果:

The result:/dev/loop0

转载地址:http://rqxsx.baihongyu.com/

你可能感兴趣的文章
Cocos2dx 2.0x Touch事件
查看>>
php判断是否登录
查看>>
Yii2 Unable to verify your data submission 错误-CSRF
查看>>
angularjs-paste-upload
查看>>
hadoop学习笔记
查看>>
解除 Linux 系统的最大进程数和最大文件打开数限制
查看>>
在 Linux 中删除超大文件的技巧
查看>>
Java类的修饰符判断:java.lang.reflect.Modifier
查看>>
使用优盘或者移动硬盘安装Ubuntu
查看>>
electron-创建一个hello world应用
查看>>
RXjs相关
查看>>
百练2973: Skew binary 数 之 Java 题解
查看>>
SaltStack配置管理
查看>>
linux基础命令 head
查看>>
在模板中将php数组转换成js对象
查看>>
使用java调用FFMPEG进行转码
查看>>
克隆虚拟机以及互相登陆
查看>>
AES加密解密
查看>>
酷客多小程序会员体系上线,你不可不知道!
查看>>
objective c:import和include的区别, ""和<>区别
查看>>