शीर्षक बहुत कुछ कहता है।इंटरफ़ेस ऊपर है या नहीं, यह जांचने के लिए
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet -snip- netmask 255.255.255.0 broadcast -snip-
...
इस का उपयोग करना, मैं अगर यह है या नहीं (<UP,...
) है पता कर सकते हैं, लेकिन मैं अगर वहाँ एक सी (या सी में यह करने के लिए ++, सक्षम होना चाहते हैं: यदि मैं ifconfig
चलाने के लिए, मैं इस मिल बाहरी प्रक्रियाओं को पार्स करने पर भरोसा किए बिना सरल समाधान)।
bool is_interface_online(std::string interface) {
struct ifreq ifr;
int sock = socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP);
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, interface.c_str());
if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
perror("SIOCGIFFLAGS");
}
close(sock);
return !!(ifr.ifr_flags | IFF_UP);
}
किसी को भी इस के लिए सही दिशा में मुझे बात कर सकते हैं:
यहाँ मैं अब तक (काम नहीं करता है) क्या मिल गया है है?
ifconfig ओपन सोर्स बीटीडब्ल्यू – Slava