Я создаю временный файл для сокета домена unix.
int fd;
char sf[] = {"/tmp/socket-XXXXXX"};
if ((fd = mkstemp(sf)) == -1)
exit(SOCKFERR);
close(fd);
Buf, когда я назначаю адрес сокету, мне нужно удалить этот файл (bind()
функция работает, только если файл, который будет файлом сокета, еще не существует).
int sfd;
struct sockaddr_un addr;
if ((sfd = socket(PF_UNIX, SOCK_STREAM, 0)) == -1)
exit(SOCKERR);
unlink(sf);
memset(&addr, 0, sizeof(struct sockaddr_un));
addr.sun_family = AF_UNIX;
snprintf(addr.sun_path, 108, sf); /* 108 is length of add.sun_path */
if (bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr_un)) != 0)
exit(BINDERR);
Как создать временный файл для сокета домена unix, не удаляя его до bind()
?