mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
shm_fd = shm_open("/ipc_shm", O_CREAT | O_RDWR, mode);
Dies funktioniert, gibt 4 für shm_fd zurück. Der gleiche Prozess ruft dann eine Bibliotheksfunktion, die auchSekunde shm_open() schlägt fehl mit ENOENT
fd = shm_open("/ipc_shm", O_RDWR, 0);
ruft Dieses mit errno nicht bis 2, das heißt ENOENT (keine solche Datei oder das Verzeichnis) festgelegt. In der Mitte befindet sich kein Ruf shm_unlink. Irgendeine Idee, warum der zweite Anruf fehlschlägt. Schätze deine Hilfe.
Die einzige Möglichkeit, die ich reproduzieren kann, ist, wenn in der Tat der gemeinsame Speicher auf die eine oder andere Weise nicht verknüpft ist. Wenn es nicht von diesem Programm gemacht wird, wird es von einem anderen Programm gemacht. –