2011-05-17 18 views
17

Necesito crear un puerto de puerto serie para la conexión remota kgdb-gdb.¿Cómo crear archivos especiales de tipo socket?

Al igual que mkfifo crea un FIFO en su sistema, ¿cómo podemos crear archivos de socket?

+1

C https://stackoverflow.com/questions/20171747/how-to-create-unix-domain-socket-with-a-specific-permissions | shell https://serverfault.com/questions/358866/create-unix-named-socket-from-the-command-line También administre KGDB GDB sin crear ningún socket manualmente: https://stackoverflow.com/a/44226360/895245 –

+0

Considere marcar el siguiente como la respuesta para dar puntos @ saw. –

Respuesta

14

El enlace en la respuesta aceptada por @cidermonkey es excelente si está intentando escribir una aplicación que usa sockets. Si, literalmente, sólo desea crear uno puede hacerlo en Python:

~]# python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/somesocket')" 
~]# ll /tmp/somesocket 
srwxr-xr-x. 1 root root 0 Mar 3 19:30 /tmp/somesocket 

O with a tiny C program, por ejemplo, guarde lo siguiente en create-a-socket.c: gcc

#include <fcntl.h> 
#include <sys/un.h> 
#include <sys/socket.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main(int argc, char **argv) 
{ 
    // The following line expects the socket path to be first argument 
    char * mysocketpath = argv[1]; 
    // Alternatively, you could comment that and set it statically: 
    //char * mysocketpath = "/tmp/mysock"; 
    struct sockaddr_un namesock; 
    int fd; 
    namesock.sun_family = AF_UNIX; 
    strncpy(namesock.sun_path, (char *)mysocketpath, sizeof(namesock.sun_path)); 
    fd = socket(AF_UNIX, SOCK_DGRAM, 0); 
    bind(fd, (struct sockaddr *) &namesock, sizeof(struct sockaddr_un)); 
    close(fd); 
    return 0; 
} 

A continuación, instalar, compilar, y ta- da:

~]# gcc -o create-a-socket create-a-socket.c 
~]# ./create-a-socket mysock 
~]# ll mysock 
srwxr-xr-x. 1 root root 0 Mar 3 17:45 mysock 
+0

¡Excelente respuesta @rsaw! Además de ser muy instructivo, también explica por qué Python a veces es un lenguaje de programación preferido. –

+0

@rsaw Respuesta de Great Python. Gracias por esto. = :) –

Cuestiones relacionadas