防止其他程序执行库中的函数

Prevent function in library to be executed from other programs

我在 Linux 上用 C++ 编写了一个共享库,其中包含一个函数 f()。这个库被多个程序使用,调用函数。
现在我想用那个函数进行一些调试,同时从程序 A 调用它。从任何其他程序调用它时,只要我调试该函数,它就应该失败。在我无法完全控制其他程序何时为 运行 之后,我想添加一个异常,它会在调试会话期间调用函数 f 时停止除程序 A 之外的所有程序。
我该如何解决?

没有绕不过去的路。如果另一个进程在你的进程上有 PTRACE,它可以在你的进程中发生任何事情,所以你执行的任何试图使该功能不起作用的检查都可以被禁用。

我唯一能想到的办法就是查看当前运行进程的信息。您可以通过调用 getpid() 函数来获取 pid。 linux 系统上所有进程的所有信息都可以在 /proc/<pid> 目录中找到。调用函数f时,可以查看此信息,决定是否抛出异常。