APUE之通过popen,fputc等函数获取本虚拟机网卡eth0的IP

任务: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 <[email protected]>
 *      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   
[[email protected] practice_sky]$ ./a.out 
192.168.119.128
时间: 2024-08-04 18:14:18

APUE之通过popen,fputc等函数获取本虚拟机网卡eth0的IP的相关文章

C#获取当前不同网卡对应的iP

C#获取当前不同网卡对应的iP: public string GetLocalIP() { IPAddress localIp = null; try { IPAddress[] ipArray; ipArray = Dns.GetHostAddresses(Dns.GetHostName()); localIp = ipArray.First(ip => ip.AddressFamily == AddressFamily.InterNetwork); } catch (Exception ex

第七篇:使用 fcntl 函数 获取,设置文件的状态标志

前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢?本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1. 对于获取文件状态标志,我们可以通过调用fcntl函数得到一个记录文件标志的整型变量,然后分别让它和各个状态标志常量进行&操作.若操作结果为正则文件具有此状态标志,否则文件没有此状态标志.( 如果是检查只读,只写,可读可写,则需要和ACCMODE相&,然后判断其结果是否为O_RDONLY,O_

第九篇:使用 lstat 函数获取文件信息

前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个目的. 下面的程序将使用该函数获取文件类型信息并判断它的类型. 但在这之前,先要说明文件信息结构体和文件类型判定宏. 文件信息结构体 调用 lstat 函数将会把指定文件的信息存放到 stat 结构体中,这个结构体的定义大致如下: 文件类型判定宏 文件结构体中的文件类型字段是一个整数,对此,可以使用

基于管道的popen和pclose函数

标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行. 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程. popen函数还创建一个管道用于父子进程间通信.父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数.下在给出popen.pclose的定义: 01 #include <stdio.h> 02 /* 03 函数功能:popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh

关于finfo_file函数获取文件mime值验证出错的问题

今天在做图片上传 验证图片mime值时 突然发现  个别特殊情况下finfo_file 获取的MIME值不能直接使用, 按照官方的写法是 $finfo=finfo_open(FILEINFO_MIME); $mime=finfo_file($finfo,$file_path); finfo_close($finfo); alert($mime); 这样子获得文件mime类型的 但是今天发现这样子不行,在文件传输中如果有charset设置传输类型为二进制流的话, 就会出现类似如下图那样: 可以明显

使用windows API函数获取目录下所有文件名---目录下文件的扫描和处理

直接上代码 // test_max.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include <Shlwapi.h> #include <iostream> #include <string> #include <vector> #pragma comment(lib,"shlwapi.lib") //注意放置的位置

perl post函数获取网页内容及解析数据的例子

#!/usr/bin/perl -w # 程序代码只是简单说明获取解析网页内容及匹配模式使用的例子,逻辑并不是很严密use utf8;binmode(STDIN, ':encoding(utf8)');binmode(STDOUT, ':encoding(utf8)');binmode(STDERR, ':encoding(utf8)'); use LWP::UserAgent;use Encode; sub get_data{    if(@_ != 1)    {        print

linux关于readlink函数获取运行路径的小程序

摘自:http://blog.csdn.net/djzhao/article/details/8178375 linux关于readlink函数获取运行路径的小程序 相关函数: stat, lstat, symlink表头文件: #include <unistd.h>定义函数:int  readlink(const  char *path,  char *buf, size_t  bufsiz);函数说明:readlink()会将参数path的符号连接内容到参数buf所指的内存空间,返回的内容

uname函数获取当前主机信息

使用uname可以获取当前系统的一些信息,主要定义和参数定义如下:(图片来字Linux C丛书) 使用此函数获取主机信息可以这样: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<sys/types.h> 4 #include<sys/socket.h> 5 #include<unistd.h> 6 #include<netinet/in.h> 7 #include<arp