LINUX:带输出参数的system函数

    在Linux编程中,经常要调用一些系统命令或SHELL脚本来帮助我们完成一些操作,大部分情况下system函数可以胜任,但有时在操作完成之后,我们还要获取它的输出,这时system函数就无能为力了。为此我编写了一个函数,可以先让系统执行一条命令,然后利用管道技术获取它的输出。

上代码:
#include <sys/types.h>   
#include <unistd.h>   
#include <stdlib.h>   
#include <stdio.h>   
#include <string.h>  

#define MAXLINE 1024  

//调用系统命令,并获取输出(相当于使用system)  
//input: 要调用的系统命令  
//output: 调用命令后系统的输出  
//maxlen: 输出字符串的最大长度  
int mysystem(char *input, char *output, int maxlen)  
{  
	if( NULL==input || NULL==output )  
		return -1;  
	int reslen;  
	FILE *stream;  
	memset(output, 0, maxlen);  
	//创建管道,并将input里的内容写入管道  
	stream = popen(input, "r");  
	//从管理中读出数据,并写入output数组  
	reslen = fread(output, sizeof(char), maxlen, stream);  
	pclose(stream);
	return reslen;  
}  

int main(int argc, char **argv)  
{  
	if( argc != 2 )
	{
		fprintf(stderr, "Using: ./mysystem <cmd>\n");
		exit(1);
	}
	char output[MAXLINE];  
	mysystem(argv[1], output, MAXLINE);  
	printf("The result of '%s' is: \n%s", argv[1], output);  
	return 0;  
}  

运行示例:
qch@ubuntu:~/code$ gcc temp.c -o temp
qch@ubuntu:~/code$ ./temp pwd
The result of 'pwd' is: 
/home/qch/code

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值