在目标计算机上访问 POSIX 信号灯时出现可执行文件崩溃(SEGV_MAPERR)

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

本文关键字:崩溃 可执行文件 SEGV MAPERR 目标计算机 访问 POSIX 信号灯      更新时间:2023-10-16

我制作了一个可执行文件,它尝试访问和获取状态或更改由目标机器(Ubuntu 16.04(上的进程创建的现有命名POSIX信号灯的状态,以良好级别运行:-19。 我的程序,我在 Ubuntu 16.04 上C++制作。通过目标计算机编译的程序访问目标计算机上的信号量时,正在正确访问和更改信号量。但是当通过我的机器编译的可执行文件访问时,它会给出SEGV_MAPERR分段错误。 在我的机器上使用另一个信号量锁定/解锁程序进行测试时,该程序可以工作。我将权限保留为 777,并将标志保留为 O_CREAT |O_EXCL两台计算机上的两个程序上的程序。

在目标计算机上运行时出错。

目标计算机上的 GDB 回溯

我在两台机器上使用信号量.h库。 谢谢。

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