Можно ли сопоставить вызов open() в сокете unix с вызовом socket() и connect ()?

Я задаюсь вопросом, есть ли способ сделать так, чтобы кто-то мог написать в мой сокет UNIX, просто вызвав open() на файл и написав в него? Как это происходит сейчас, они должны сделать что-то вроде следующего:

// Create socket.

fd = socket(AF_UNIX, SOCK_STREAM, 0);
if (fd == -1)
    {
    result = -1;
    goto done;
    }

// Set socket name.

memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, socket_name, sizeof(addr.sun_path) - 1);

// Connect.

result = connect(fd, (struct sockaddr*) &addr, sizeof(addr));
if (result == -1)
    {

    // If some error then we're done.                                       
    }

// Write buffer.

result = write(fd, buffer, length);
if (result == -1)
    goto done;

close(fd);

Я надеялся, что может быть какой-то механизм, где я мог бы рассматривать файл сокета как обычный файл и пользователи просто вызывают open (), write() и close(). Есть ли такой механизм?

Спасибо,
Ник

1 ответ

  1. Технически это возможно с предохранителем, но вам лучше использовать socatили даже более конкретное решение.