Corinna Vinschen a écrit :
On Oct 12 11:09, patrick ficheux wrote:
In SANE (scanner project), the backend for snapscan failed to call shmget()
with error EACCES (Permission denied) if the current user isn't
administrator.
When I'am logged as windows administrator, shmget() is called successfully
In both case, the env. variable CYGWIN exists and this value is
CYGWIN=server
cygserver is installed and runs
Is it possible to call shmget() without administrator's privileges ?
In this case, what kind of privileges a user must have ? and how to set
those privileges ?
Thanks
extract from snapscan backend
#ifndef SHM_R
#define SHM_R 0
#endif
#ifndef SHM_W
#define SHM_W 0
#endif
^^^^^^^^^^^^^^^^^^^^
This is the problem. SHM_R and SHM_W are not defined on Cygwin.
These flags are not defined by POSIX and relying on them as above is
non-portable. As a result, you create a shared mem region with
permission bits set to 000.
int shm_id = shmget (IPC_PRIVATE, shm_size, IPC_CREAT | SHM_R | SHM_W);
Try something like
#include <sys/stat.h>
int shm_id = shmget (IPC_PRIVATE, shm_size, IPC_CREAT | S_IRWXU);
it works fine !
thanks a lot
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/