Cómo obtener la información de entorno del sistema Linux T-swap

  
                  Entrar en el disco U o un método tradicional de tirar de la información adquirida se ejecute de conexión en caliente en los procedimientos a nivel del núcleo, los parámetros pertinentes a través de variables de entorno pasaron, y luego notificar a la otra aplicación de conexión en caliente interesado por la conexión en caliente. Este enfoque algo menos eficaces, y ahora a través de un tipo especial de enlace de red toma cuenta de U disco de intercambio de acceso a la información. netlink diseñado para comunicaciones asíncronas espacio del núcleo y el espacio de usuario. Los siguientes ejemplos pueden monitorear evento hotplug kernel, el código fuente es el siguiente:
 # include < stdio.h > # include < stdlib.h > # include < string.h > # include < ctype.h > # incluir < sys /un.h > #; # include < sys /ioctl.h > # include < sys /socket.h > # include < Linux /types.h > # include < Linux /netlink.h > incluir < errno.h > #define UEVENT_BUFFER_SIZE 2048static int init_hotplug_sock (void); int main (int argc, char * argv []) {int hotplug_sock = init_hotplug_sock (); while (1) {buf char [UEVENT_BUFFER_SIZE * 2] = {0}; recv (hotplug_sock, &buf, sizeof (BUF), 0); printf ( "% s \\ n", buf);} return 0;} int init_hotplug_sock estática (void) {struct sockaddr_nl SNL; const int buffersize = 16 * 1024 * 1024; int retval; memset (&snl, 0x00, sizeof (struct sockaddr_nl)); snl.nl_family = AF_NETLINK; snl.nl_pid = getpid (); snl.nl_groups = 1; int hotplug_sock = socket (PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT), si (hotplug_sock == -1) {printf ( "error al obtener socket:% s", strerror (errno)); regreso -1;} /* establecer r buffersize e pto * /setsockopt (hotplug_sock, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof (buffersize)); retval = bind (hotplug_sock, (struct sockaddr *) &snl, sizeof (struct sockaddr_nl)); si (retval < 0 ) {printf ( "bind falló:% s", strerror (errno)); cerrar (hotplug_sock); hotplug_sock = -1; -1 retorno;} hotplug_sock retorno;}
						
Copyright © Conocimiento de Windows All Rights Reserved