嵌入式linux编程中的一些基本操作

来源:互联网 发布:配音软件有哪些 编辑:程序博客网 时间:2024/04/29 22:39

    本文总结了一些嵌入式linux开发过程中的常用api,希望对大家有所帮助。


一 、 获取系统时间

int getlocaltime(struct tm *time){    struct timeval tv;    time_t second;    struct tm *temp;    gettimeofday(&tv, NULL);    second = tv.tv_sec;    temp = localtime(&second);    temp->tm_year += 1900;    temp->tm_mon += 1;    memcpy(time, temp,sizeof(struct tm));    return 1;}

二 、 设置系统时间

int setlocaltime(struct tm *tm){time_t timesec;struct timeval tv;struct tm temptm;memcpy(&temptm,tm,sizeof(temptm));temptm.tm_year = tm->tm_year - 1900;temptm.tm_yday = 0;temptm.tm_isdst = -1;/* Be sure to recheck dst. */timesec = mktime(&temptm);tv.tv_sec = timesec;tv.tv_usec= 0;settimeofday(&tv,0);//设置系统时间    return 1;}

三 、 设置IP地址

int setip(char* ip){    struct ifreq temp;    struct sockaddr_in *addr;    int fd = 0;    int ret = -1;    strcpy(temp.ifr_name, "eth0");    if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)    {        return -1;    }    addr = (struct sockaddr_in *)&(temp.ifr_addr);    addr->sin_family = AF_INET;    addr->sin_addr.s_addr = inet_addr(ip);    ret = ioctl(fd, SIOCSIFADDR, &temp);    close(fd);    if(ret < 0)        return -1;    return 0;} 

四 、 检查网线是否连接

int check_nic(void)  {      struct ifreq ifr;      int skfd = socket(AF_INET, SOCK_DGRAM, 0);        strcpy(ifr.ifr_name, "eth0");      if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)      {          close(skfd);          return -1;      }     if(ifr.ifr_flags & IFF_RUNNING){          printf("link up\n");          close(skfd);          return 0; // 网卡已插上网线      }else     {          printf("link down\n");          close(skfd);          return -1;      }  }  

五 、 读取本机MAC地址

int read_mac(unsigned char *buf,char *name){    int sock;int ret;struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock == -1) { perror("socket error"); return -1; } memset(&ifr, 0, sizeof(ifr));    strcpy(ifr.ifr_name, name);    ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0';ret = ioctl(sock,SIOCGIFHWADDR,&ifr);if(ret == 0){        memcpy(buf, ifr.ifr_hwaddr.sa_data, 6);        printf("HW address is: %02x:%02x:%02x:%02x:%02x:%02x \n",         (unsigned char)buf[0], (unsigned char) buf[1], (unsigned char) buf[2],        (unsigned char)buf[3], (unsigned char) buf[4], (unsigned char)buf[5]);            }else{perror("ioctl error!\n");}close(sock);return ret;}

六、 判断文件是否存在

int is_file_exist(const char *file_path){    if(file_path == NULL)return -1;if(access(file_path,F_OK)==0)    return 1;    return -1;}

七 、 获取IP地址

void getip(unsigned char* ip_buf,char * name){    struct ifreq temp;    struct sockaddr_in *myaddr;    int fd = 0;    int ret = -1;    strcpy(temp.ifr_name, name);    if((fd=socket(AF_INET, SOCK_STREAM, 0))<0)    {        return NULL;    }    ret = ioctl(fd, SIOCGIFADDR, &temp);    close(fd);    if(ret < 0)        return NULL;    myaddr = (struct sockaddr_in *)&(temp.ifr_addr);    strcpy(ip_buf, inet_ntoa(myaddr->sin_addr));    printf("getip:%s\n",ip_buf);} 

八 、 快速排序

void QuickSort(int * num,int low,int high){    int temp;     if(low>=high) return;     int mid=(low+high)/2,i=low,j=high,x;     x=num[mid];     while(1)     {         while(num[i]<x) i++;         while(num[j]>x) j--;         if(i>=j) break;         temp=num[i];         num[i]=num[j];         num[j]=temp;     }     num[mid]=num[j];     num[j]=x;     QuickSort(num,low,j-1);     QuickSort(num,j+1,high);     return;}

OK,就讲这么多了,看看大家有什么补充的,都贴出来吧,也为C语言开发做点贡献。



0 0