linux 下如何编写c程序,获得命令行结果?
如题,比如在linux下的ifconfig,运行编写的c程序,如何获得结果,之后在终端printf输出结果?貌似是用管道重定向,不太懂,希望大神求解~~能给个程序的例子最...
如题,比如在linux下的ifconfig,运行编写的c程序,如何获得结果,之后在终端printf输出结果?貌似是用管道重定向,不太懂,希望大神求解~~能给个程序的例子最好了,命令就拿ifconfig吧~~~谢谢啦
展开
4个回答
展开全部
void executeShell(const char *shell){
FILE *stream;
char buf[1024];
memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中
stream = popen( shell , "r" ); //将命令的输出 通过管道读取(“r”参数)到FILE* stream
fread( buf, sizeof(char), sizeof(buf), stream); //将刚刚FILE* stream的数据流读取到buf中
pclose( stream );
printf("%s \n",buf);//打印输出结果
}
展开全部
ifconfig的默认输出就是终端输出,只有你不需要终端输出的时候才会使用重定向,一般的重定向是文件重定向,两个符号,>>(append模式0) , >(一般模式)。管道是 | 符号,和重定向不同。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在C文件里调用system就可以了。
#include <stdio.h>
int main(int argc, char *argv[])
{
system("ifconfig");
return 0;
}
编译执行就能在终端中输出ifconfig命令的结果。
man system看看。
shell脚本才会用到重定向。
#include <stdio.h>
int main(int argc, char *argv[])
{
system("ifconfig");
return 0;
}
编译执行就能在终端中输出ifconfig命令的结果。
man system看看。
shell脚本才会用到重定向。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要获取什么,ifconfig命令是获取当前主机的IP地址等信息,可以直接在终端命令行输入,例如
akaedu@akaedu-desktop:~/jwy/baidu/str$ ifconfig
eth0 Link encap:以太网 硬件地址 00:1f:d0:c4:91:92
inet 地址:192.168.1.155 广播:192.168.1.255 掩码:255.255.255.0
inet6 地址: fe80::21f:d0ff:fec4:9192/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:37932 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:23506 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:49613893 (49.6 MB) 发送字节:2359948 (2.3 MB)
中断:26 基本地址:0x4000
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 跃点数:1
接收数据包:116 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:116 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:9772 (9.7 KB) 发送字节:9772 (9.7 KB)
akaedu@akaedu-desktop:~/jwy/baidu/str$ ifconfig
eth0 Link encap:以太网 硬件地址 00:1f:d0:c4:91:92
inet 地址:192.168.1.155 广播:192.168.1.255 掩码:255.255.255.0
inet6 地址: fe80::21f:d0ff:fec4:9192/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:37932 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:23506 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:49613893 (49.6 MB) 发送字节:2359948 (2.3 MB)
中断:26 基本地址:0x4000
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 跃点数:1
接收数据包:116 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:116 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:0
接收字节:9772 (9.7 KB) 发送字节:9772 (9.7 KB)
追问
用c实现一个程序,运行这个程序输出ifconfig结果
追答
你要的函数功能实现起来有点麻烦,下面的链接代码可以实现部分显示,我运行过,最下面是运行截图,不知道是不是你要的代码,有500多行。
链接:http://hi.baidu.com/zengzhaonong/blog/item/30836c8d9329cb19b31bba8f.html
截图如下:
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询