명령행에서 ifconfig eth0 192.168.1.15 up을 코드로 짜려고 합니다.
어떻게 해야 할지 모르겠네요.
고수님들에 조언을 듣습니다.
#include <stdlib.h>
system ("ifconfig eth0 192.168.1.15 up");
혹은
#include <unistd.h> if (fork() == 0) execl("/sbin/ifconfig", "ifconfig", "eth0", "192.168.1.15", "up", NULL);
혹은 ifconfig 소스...
$PWD `date`
개발하던 장비에서 라이브러리로 사용하기 위해 만들었던 것입니다. 참고하세요
#define SET_MASK (0x01) #define CLR_MASK (0x02) int apn_set_inet(const unsigned int cmd, const char *ifn, const char *args) { struct ifreq ifr; struct sockaddr_in sai; unsigned short selector = 0, flags = 0; unsigned int mask = 0; char host[128]; int fd = -1; if (!(cmd & (APN_INET_SET_IPADDR | APN_INET_SET_NETMASK | APN_INET_SET_BROADCAST | APN_INET_SET_PROMISC | APN_INET_SET_IFFUP))) return -1; DEBUG("%s (cmd:%d,args:%s)\n", ifn, cmd, (args != NULL) ? args : "NULL"); memset((char *)&ifr, 0, sizeof (struct ifreq)); safe_strncpy(ifr.ifr_name, ifn, IFNAMSIZ); sai.sin_family = AF_INET; sai.sin_port = 0; if ((args != NULL) && !(cmd & APN_INET_SET_FLAGS)) { safe_strncpy(host, args, sizeof(host)); if (inet_aton(host, &sai.sin_addr) == 0) return -1; } else sai.sin_addr.s_addr = INADDR_ANY; switch(cmd) { case APN_INET_SET_IPADDR: selector = SIOCSIFADDR; memcpy((char *)&ifr.ifr_addr, (char *)&sai, sizeof(struct sockaddr)); break; case APN_INET_SET_NETMASK: selector = SIOCSIFNETMASK; memcpy((char *)&ifr.ifr_netmask, (char *)&sai, sizeof(struct sockaddr)); break; case APN_INET_SET_BROADCAST: selector = SIOCSIFBRDADDR; memcpy((char *)&ifr.ifr_broadaddr, (char *)&sai, sizeof(struct sockaddr)); break; case APN_INET_SET_PROMISC: selector = SIOCGIFFLAGS; flags = IFF_PROMISC; if (!strcmp(args, "on") || !strcmp(args, "yes") || !strcmp(args, "1")) mask = SET_MASK; else mask = CLR_MASK; break; case APN_INET_SET_IFFUP: selector = SIOCGIFFLAGS; flags = (IFF_UP | IFF_RUNNING); if (!strcmp(args, "on") || !strcmp(args, "yes") || !strcmp(args, "up")) mask = SET_MASK; else mask = CLR_MASK; break; default: break; } fd = socket(AF_INET, SOCK_DGRAM, 0); if (ioctl(fd, selector, &ifr) < 0) return -1; if (mask) { if (mask & SET_MASK) ifr.ifr_flags |= flags; else ifr.ifr_flags &= ~flags; if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) { close(fd); return -1; } } DEBUG("success!!\n"); close(fd); return 0; }
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
#include <stdlib.h>system ("if
#include <stdlib.h>
system ("ifconfig eth0 192.168.1.15 up");
혹은[code:1]#include <unistd.h>
혹은
혹은 ifconfig 소스...
$PWD `date`
개발하던 장비에서 라이브러리로 사용하기 위해 만들었던 것입니다. 참고하
개발하던 장비에서 라이브러리로 사용하기 위해 만들었던 것입니다. 참고하세요
댓글 달기