码迷,mamicode.com
首页 > 系统相关 > 详细

linux下使用popen() 替代system()

时间:2017-08-08 16:56:28      阅读:995      评论:0      收藏:0      [点我收藏+]

标签:pen   pop   size   str   实现   linu   error:   file   sizeof   

  在项目里用system(),然后发现调用失败,返回值为-1,感觉这个函数有点不靠谱。决定用popen()来替代system().具体参考了http://blog.sina.com.cn/s/blog_8043547601017qk0.html

  具体实现如下,具体分析等有空再加上

int my_system(const char * cmd) 
{ 
	FILE * fp; 
	int res; char buf[1024]; 
	if (cmd == NULL) 
	{ 
		printf("my_system cmd is NULL!\n");
		return -1;
	} 
	if ((fp = popen(cmd, "r") ) == NULL) 
	{ 
		perror("popen");
		printf("popen error: %s/n", strerror(errno)); return -1; 
	} 
	else
	{
		while(fgets(buf, sizeof(buf), fp)) 
		{ 
		printf("%s", buf); 
		} 
		if ( (res = pclose(fp)) == -1) 
		{ 
			printf("close popen file pointer fp error!\n"); return res;
		} 
		else if (res == 0) 
		{
			return res;
		} 
		else 
		{ 
			printf("popen res is :%d\n", res); return res; 
		} 
	}
} 

  

 

linux下使用popen() 替代system()

标签:pen   pop   size   str   实现   linu   error:   file   sizeof   

原文地址:http://www.cnblogs.com/new-ass/p/7307214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!