现在的位置: 首页 > 综合 > 正文

在LINUX下如何编程设置系统时间和IP地址

2018年04月17日 ⁄ 综合 ⁄ 共 1634字 ⁄ 字号 评论关闭

1.设置系统时间
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <sys/time.h>

int set_date(struct tm *p_tm)
{
time_t when;  
struct timeval tv;  

when = mktime(p_tm);
if (when == -1)
return -1;
tv.tv_sec = when;  
tv.tv_usec = 0;  
return settimeofday(&tv, (struct timezone *)0);
}

int main()
{
struct tm tm;
// 1976年11月26日 11:15:0
memset(&tm, 0, sizeof(tm));
tm.tm_sec = 0;         
tm.tm_min = 15;        
tm.tm_hour = 11;       
tm.tm_mday = 26;       
tm.tm_mon = 10;       
tm.tm_year = 1976 - 1900;        
if (set_date(&tm) == -1)
perror("set_date");
return 0;
}

2。设置ip地址
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <errno.h>
#include <net/if.h>


int ifconfig(const char *ifname, const char *ipaddr)
{
struct sockaddr_in sin;
struct ifreq ifr;
int fd;

int ret;
char *ptr;

short found_colon = 0;


bzero(&ifr, sizeof(struct ifreq));

  if (ifname == NULL)
  return (-1);
  if (ipaddr == NULL)
  return (-1);
 

fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd == -1)
{
perror("Not create network socket connection\n");
return (-1);
}

strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = 0;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(ipaddr);
memcpy(&ifr.ifr_addr, &sin, sizeof(sin));

if (ioctl(fd, SIOCSIFADDR, &ifr) < 0)
{
perror("Not setup interface\n");
return (-1);
}

ifr.ifr_flags |= IFF_UP | IFF_RUNNING;

if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) 
{
perror("SIOCSIFFLAGS");
return (-1);
}

return (0); 
}

//Usage setip eth0 xxx.xxx.xxx.xxx 
int main(int argc, char *argv[])
{
ifconfig(argv[1], argv[2]);
return 0;

}

抱歉!评论已关闭.