#include #include #include #include #include #include #include /* * open a socket, get the process group information of the socket, and use the * socket to get the network interface configuration list */ main() { int sock; int ioctl_result; /* get a socket */ sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock < 0) { perror("Cannot create socket"); exit(1); } /* use ioctl() to get the process group information */ { int get_process_group; ioctl_result = ioctl(sock, SIOCGPGRP, (char *) &get_process_group); if (ioctl_result < 0) { int my_errno = errno; fprintf(stderr, "errno %d ", my_errno); perror("ioctl(get process group)"); } } /* use ioctl() to get the interface configuration list */ { static struct ifconf ifc; /* init to 0 */ ioctl_result = ioctl(sock, SIOCGIFCONF, (char *) &ifc); if (ioctl_result < 0) { int my_errno = errno; fprintf(stderr, "errno %d ", my_errno); perror("ioctl(get interface configuration list)"); } } }