APUE之通过popen,snprintf,fputc等函数获取网卡eth0的IP

5 篇文章 0 订阅
4 篇文章 0 订阅

任务:unix环境通过c程序获取本虚拟机网卡eth0的IP.


总结:

1. 标准I/O库函数相对于系统调用的函数多了个缓冲区(,buf),安全性上通过buf 防溢出。

2.用system函数输出是标准输出,进一步理解fork函数和exec函数重新开启一个进程运行程序;

3.printf 这类输出函数中“ ”若包含“记得要换成转义字符\"            资料链接:   http://blog.csdn.net/ce123_zhouwei/article/details/9074121

/*********************************************************************************
 *      Copyright:  (C) 2014 songyong<handy_skyoutlook.com>
 *                  All rights reserved.
 *
 *       Filename:  eth0.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(2014年12月26日)
 *         Author:  sky <handy_sky@outlook.com>
 *      ChangeLog:  1, Release initial version on "2014年12月26日 18时38分51秒"
 *                 
 ********************************************************************************/
#include<stdio.h>
#define sizeofbuf 512

int main(int argc,char **argv)
{
        char    buf[sizeofbuf];
        FILE    *fp;
        char     ch;

    snprintf(buf,sizeof(buf),"ifconfig eth0|grep 'inet addr'|awk '{print $2}'|cut -d \":\" -f2");
    fp = popen(buf,"r");
       if( NULL == fp)
            {
                 printf("error");
                 exit(-1);
            }
            while( EOF != (ch=fgetc(fp)) )
                {
                  fputc(ch,stdout); 
                } 
}

 
// 编译后运行成功获取本机IP   
[pikaqiu@centos6 practice_sky]$ ./a.out 
192.168.119.128




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值