- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Linux 上,您可以检查/proc/$PID/pmaps 以查看特定程序加载的库,程序可以打开/proc/self/pmaps 以检查它自己加载的库。
我知道 pmaps 将只包含动态库,显然内核无法预测我们稍后可能会 dlopen 哪些库,所以我希望那些不包含在/proc/self/maps 中。但我不确定其他一些情况:
是否包含在构建时已链接但我们尚未调用任何函数的库?我的理解是 Linux 延迟链接符号,直到它们第一次被使用,所以我不确定它们是否会出现。
pmaps 是否包含递归使用的所有库?例如。如果我查看 pmaps 中的每个库并在其上运行 ldd,然后在这些库上运行 ldd,令人作呕,我不应该找到原始 pmaps 中没有的任何新库吗?我在几个二进制文件上试过了,看起来是这样,但也许我走运了。
最佳答案
Are libraries that have been linked at build time but we haven't called any function in yet included?
是的:在您的程序开始运行之前,运行时加载器将mmap
您的可执行文件直接依赖的每个库。
您可以通过运行找到此类库的列表
readelf -d a.out | grep NEEDED
Does pmaps contain all the libraries used recursively?
是的:如果您直接依赖于自身的库依赖于其他某个库,运行时加载器也会mmap
递归依赖。
My understanding is the Linux delays linking symbols until the first time they are used
这对于函数 符号来说大部分是正确的,但对于不能延迟解析的数据符号来说是错误的。
此外,符号是否延迟解析取决于 LD_BIND_NOW
环境变量,以及可执行动态部分中的等效设置,由 -znow
链接器标志控制.
虽然这些都没有改变 mmap
pciture;如果您的动态部分中有 foo.so
的 DT_NEEDED
条目,则 foo.so
将 mmap
ed(并将显示在 /proc/self/*map*
中)独立于惰性或非惰性分辨率。
关于linux -/proc/$PID/pmaps 中出现了哪些库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782074/
manpage of reboot()说 Behavior inside PID namespaces Since Linux 3.4, if reboot() is called from a PI
我今天第一次在 Nvidia jetson Xavier 中安装和配置并使用了电视, 但重启后我遇到了这个问题: teamviewerd.service: 启动后无法打开 PID 文件/var/run
我在我的服务器上安装了 hhvm,在我重新启动服务器之前它一直运行良好。在 hhvm 的日志中,我看到了这个错误: Unable to read pid file /var/run/hhvm/pid
我正在尝试为我的应用程序精简,但随后无法生成 pid: $ thin -C /var/www/project_path/current/config/myproject.testing.yml sta
我正在从我的私有(private) git 存储库安装应用程序。我安装了所有依赖项并且我正在使用 Capistrano。我能够在我的本地计算机上成功运行应用程序。我正在使用 rails -v 3.2.
我已按照 DigitalOcean 指南中的步骤进行操作 here和 here使用 nginx 和 Unicorn 设置 Sinatra 服务器。我在倒数第二步: start the Unicorn
我在 C 程序中连续进行了 3 个 fork 。 1.它会以相同的顺序执行吗? (我的猜测是肯定的)。 2. 如果我做 pgrep myexecutable从 shell 中,它会按照启动的顺序给出进
我尝试通过FT_Prog更改FTDI芯片(R232R)中的PID。它可以工作,但之后我发现 Windows 7 自动重新安装 USB 设备的驱动程序,而不是 FTDI 设备。所以我想将PID改回默认值
第一次在这里发表 简单情况:在 PUTTY 中,我必须创建一个名为 admin.pid 的文件,当用户启动我正在创建的“应用程序”时,它会在其中存储 PID。我怎样才能做到这一点?谢谢 最佳答案 使用
我设法为每个单独的进程输出正确的进程 ID 顺序,但我的问题是我无法显示子进程的 PID。 我的程序能够打印 parent 的 PID 和孙子的 PID。我确实看到了 child 的 PID,但它显示
我正在从事一个项目,其中有许多 PID,我必须找出其中哪些是僵尸进程,然后终止它们的父进程以终止初始僵尸进程。我不确定是否有任何方法可以找出给定 PID 的 PPID 是什么。任何帮助将不胜感激。 最
我正在使用 htop,所以看看哪些进程占用了大量内存,以便我可以杀死它们。我有很多 tmux session 和很多类似的过程。如何检查 PID 所在的 tmux Pane ,以便确定我正在杀死我想杀
我正在通过运行跟踪应用程序: strace -f -y -qq -z -etrace=execve,... -o app.trace ./app 有没有办法确定哪个进程产生了哪个 child_proc
在我使用 exec 之后docker 容器内的命令我可以使用 exec inspect 获取 PID .问题是这个 ID 不是容器本地的,而是系统 PID。所以我会得到类似 22620 的东西,而 d
我有一个我开发的用于启动 Java 程序的 System V 初始化脚本。由于某种原因,无论何时创建 PID 文件,它都包含多个 PID 而不是一个。 下面是启动服务并写入PID文件的相关代码: da
我有一个变量 pidfile,它存储进程的 PID。 如何使用 Ruby 以编程方式终止 pidfile 中的 pid,假设我只知道文件名,而不是其中的实际 PID。 最佳答案 Process.kil
我读入了Beej's fork() primer当我调用 pid = fork(); 时,父进程获取子进程的 pid,而在子进程内部 pid = 0。 现在,由于子进程开始执行 在 fork() 语句
我正在尝试从另一个 Python 脚本运行一个 Python 脚本,并获取它的 pid 以便稍后可以终止它。 我尝试使用参数 shell=True' 的 subprocess.Popen(),但是pi
我有一个用 Cygwin 生成的进程shell 脚本,我无法用 kill 杀死它命令。即使与 Cygwin kill与 -f选项,我收到此消息: kill: couldn't open pid 123
我尝试在我的模型中为阀门构建一个 PID Controller ,我计划进行一些过程识别,获得系统对阶跃脉冲的响应和系统的传递函数,然后我可以设计 PID Controller 。但我不确定是否有用于
我是一名优秀的程序员,十分优秀!