Abstrakte Socket -Bindung errno 2Linux

Linux verstehen
Anonymous
 Abstrakte Socket -Bindung errno 2

Post by Anonymous »

Ich versuche, einen unix -abstrakten Socket zu binden. Bind () gibt jedoch immer -1 zurück und das ERRNO ist 2 (keine solche Datei oder Verzeichnis). < /P>

Code: Select all

#include 
#include 

static const char *socket_path = "server-core";

void api_control_thread_func() {

int core_fd = socket(AF_UNIX, SOCK_STREAM, 0); // unix domain socket, tcp
sockaddr_un core_addr{};
memset(&core_addr, 0, sizeof(struct sockaddr_un));
core_addr.sun_family = AF_UNIX;
strncpy(&core_addr.sun_path[1], socket_path, strlen(socket_path));

socklen_t core_addrlen = sizeof(core_addr);
//  socklen_t core_addrlen = offsetof(sockaddr_un, sun_path) + 1 + strlen(socket_path);

if (core_fd == -1) {
console(ERROR, API_SOCK_CREATE_FAILED, nullptr, "api::api_control");
shared_resources::flag_api_kill = true;
return;
}
if (bind(core_fd, (struct sockaddr *) &core_addr, core_addrlen) == -1) {
console(DEBUG, DEBUG_MSG, std::to_string(errno).c_str(), "api::api_control"); // console is formatted output
console(ERROR, API_SOCK_BIND_FAILED, nullptr, "api::api_control");
shared_resources::flag_api_kill = true;
return;
}
// the rest of the code
}
Ich erwarte, dass es erfolgreich als abstrakter Socket bin>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post