我制作了一个可执行文件,该可执行文件试图访问并更改状态为-19的目标计算机(Ubuntu 16.04)上的进程创建的现有命名POSIX信号量的状态或更改其状态。 我的程序是在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库。 谢谢。
答案 0 :(得分:0)
解决了。我只需要删除O_EXCL标志,还必须以root用户身份运行应用程序。