可执行文件崩溃(SEGV_MAPERR)访问目标机器上的 POSIX 信号量

Executable crashing(SEGV_MAPERR) on access POSIX Semaphore on target machine

我制作了一个可执行文件,它试图访问和获取状态或更改目标机器上进程创建的现有命名 POSIX 信号量的状态(Ubuntu 16.04) 运行 在友好级别:-19。 我的程序是在 Ubuntu 16.04 上用 C++ 编写的。通过目标机器编译的程序访问目标机器上的信号量时,信号量被正确访问和更改。但是当我的机器编译的可执行文件访问时,它会出现 SEGV_MAPERR 分段错误。 在我的机器上使用另一个信号量 locking/unlocking 程序进行测试时,程序 works.I 将权限保持为 777,将标志保持为 O_CREAT | O_EXCL 在两台机器上的两个程序上的程序上。

Erro on running on target machine.

Backtrace by GDB on Target machine

我在两台机器上都使用 semaphore.h 库。 谢谢

解决了。我只需要删除 O_EXCL 标志,我还必须 运行 我的应用程序作为 root。