linux下使用popen() 替代system()
Posted 萌新工程师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下使用popen() 替代system()相关的知识,希望对你有一定的参考价值。
在项目里用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()的主要内容,如果未能解决你的问题,请参考以下文章
python 中os.system和commands.getoutput的区别
pycharm下 os.system os.popen执行命令返回有中文乱码