dear all: i wrote a program and i used the udev_event socket to receive the udev event, the program is as follow: int udev_socket; struct sockaddr_un saddr; socklen_t addrlen; const int on = 1; GIOChannel *udev_channel; printf("net_manage_init\n"); memset(&saddr, 0x00, sizeof(saddr)); saddr.sun_family = AF_LOCAL; strcpy(&saddr.sun_path[1], "/com/yy/net_manager"); addrlen = offsetof(struct sockaddr_un, sun_path) +strlen(saddr.sun_path+1) + 1; udev_socket = socket(AF_LOCAL, SOCK_DGRAM, 0); if (udev_socket == -1) { printf("Couldn't open socket"); return; } if (bind(udev_socket, (struct sockaddr *) &saddr, addrlen) < 0) { printf ("Error binding udev_event socket: %s\n", strerror(errno)); return; } setsockopt(udev_socket, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)); and when i first to run my program, everything goes ok,but after i killed my program and run it again,i find a promote of "Error binding udev_event socket: Address already in use",and i can't receive the udev event. and i restart the udevd daemon,but still i can't receive the udev event, is there anyone who can give me some advice? i have been working on it for a long time, it really a nightmare to me, thanks for advance -- To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html