我已经创建了一个可执行文件,它试图访问并获取状态或更改由目标机器(Ubuntu 16.04)上以良好级别运行的进程创建的现有命名POSIX信号量的状态:-19。我的程序,我在Ubuntu 16.04上用C ++编写。在通过目标机器编译的程序访问目标机器上的信号量时,正在正确地访问和更改信号量。但是当我的机器编译的可执行文件访问它时,它会给出SEGV_MAPERR分段错误。在我的机器上使用另一个信号量锁定/解锁程序进行测试时,该程序正常工作。我将权限保持为777并将标志保持为O_CREAT | O_EXCL关于两台机器上的两个程序的程序。
Erro on running on target machine.
Backtrace by GDB on Target machine
我在两台机器上都使用semaphore.h库。谢谢。
解决了它。我只需要删除O_EXCL标志,我还必须以root身份运行我的应用程序。