代码之家  ›  专栏  ›  技术社区  ›  arc_lupus

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

  •  0
  • arc_lupus  · 技术社区  · 6 年前

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   doron    6 年前

    我能想到的唯一方法是检查当前正在运行的进程的信息。你可以得到 pid 通过调用 getpid() 作用linux系统上所有进程的所有信息都可以在 /proc/<pid> 目录调用函数时 f ,您可以检查此信息并决定是否引发异常。

        2
  •  1
  •   Omnifarious    6 年前

    没有一种方法是绕不过去的。如果另一个进程在您的进程上有PTRACE,它可能会使您的进程中发生任何事情,因此您为使该功能无法工作而执行的任何检查都可以被禁用。