任务: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