linux 下如何编写c程序,获得命令行结果?

2024年11月17日 21:35
有4个网友回答
网友(1):


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);//打印输出结果

}

网友(2):

ifconfig的默认输出就是终端输出,只有你不需要终端输出的时候才会使用重定向,一般的重定向是文件重定向,两个符号,>>(append模式0) , >(一般模式)。管道是 | 符号,和重定向不同。

网友(3):

直接在C文件里调用system就可以了。
#include
int main(int argc, char *argv[])
{
system("ifconfig");
return 0;
}
编译执行就能在终端中输出ifconfig命令的结果。
man system看看。

shell脚本才会用到重定向。

网友(4):

你要获取什么,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)