linux获取IP地址
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
int sock_fd;
struct my_addr;
struct ifreq ifr;
unsigned char * addr;
#define ETH_INTERFACE_NAME "eth0"
/**//* Get socket file descriptor */
if ((sock_fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1)...{
perror("socket");
exit(1);
}
/**//* Get IP Address */
strncpy(ifr.ifr_name, ETH_INTERFACE_NAME, IF_NAMESIZE);
ifr.ifr_name[IFNAMSIZ-1]='\0';
if (ioctl(sock_fd, SIOCGIFADDR, &ifr) < 0)...{
perror("ioctl");
exit(1);
}
memcpy(&my_addr, &ifr.ifr_addr, sizeof(my_addr));
addr=inet_ntoa(my_addr.sin_addr);
相关文档:
Linux的网络系统主要是基于BSD Unix 的socket机制, 访问网络设备的驱动程序不需要使用设备节点。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统内部支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。因此,选择哪个驱动程序是基于内核内部的其他决定,而不是调用open() ......
Linux 2.6下SPI设备模型
--------基于AT91RM9200分析
Atmel公司的ARM AT系列,其SPI驱动在kernel 2.6.23里已经包含。如果你打了at91-patch补丁的话,则在内核配置时要小心。在Device Drivers---- > Character devices ---- >取消选中SPI Driver(legacy) for at91rm9200 pro ......
以下是我的测试oci的例子!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "oci.h"
static OCIServer *srvhp;
static OCISession *p_session;
static OCIEnv &nb ......
3、线程标识
函数原型:
#include <pthread.h>
pthread_t pthread_self(void);
pid_t getpid(void);
getpid()用来取得目前进程的进程识别码,函数说明
例程8
程序目的:实现在新建立的线程中打印该线程的id和进 ......