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?
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?
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
¡Excelente respuesta @rsaw! Además de ser muy instructivo, también explica por qué Python a veces es un lenguaje de programación preferido. –
@rsaw Respuesta de Great Python. Gracias por esto. = :) –
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 –
Considere marcar el siguiente como la respuesta para dar puntos @ saw. –