I'm trying to open a shared memory, Its giving me No such file or directory error. But i have a file as well as a directory in the name region.
fd_sh = shm_open("/home/angus/c_tutorials/interview/linux_sys_pgm/mmap/region", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
if(fd_sh == -1){
perror("fd_sh:ERROR");
return -1;
}
In Linux (I assume that's your OS, given your code), the name should start with a slash but not have any others afterwards, e.g. "/myshm"
-- not a regular filename.
From the man page:
The operation of shm_open() is analogous to that of open(2). name
specifies the shared memory object to be created or opened. For porta‐
ble use, a shared memory object should be identified by a name of the
form /somename; that is, a null-terminated string of up to NAME_MAX
(i.e., 255) characters consisting of an initial slash, followed by one
or more characters, none of which are slashes.
Doing it this way will work fine.
What in fact happens is that the name given is created as a file in /dev/shm
, so you would need to create a directory structure to use a path; this is not a good idea since this directory is only in memory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With