任务: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
APUE之通过popen,fputc等函数获取本虚拟机网卡eth0的IP
原文地址:http://blog.csdn.net/u010944778/article/details/42177243