所以每个人都可能知道glibc /lib/libc.so.6可以在shell中执行,就像普通的可执行文件一样,在这种情况下它可以打印出版本信息并退出.这是通过在.so中定义入口点来完成的.对于某些情况,将其用于其他项目可能会很有趣.不幸的是,您可以通过ld的-e选项设置的低级入口点有点太低级:动态加载器不可用,因此您无法调用任何正确的库函数.因此,glibc通过此入口点中的裸系统调用实现write()系统调用.
我现在的问题是,任何人都可以想到一个很好的方法,如何从该入口点引导一个完整的动态链接器,以便可以访问其他.so的函数?
所以我有一个tty(让我们说/ dev/tty5)并且想要知道它当前是否是进程组或会话的控制tty,或者它是否当前是无主的.POSIX有两个API函数,它们在这里建议:tcgetpgrp()和tcgetsid(),这两个函数只有在调用者将tty作为控制tty的情况下才有效 - 在这种情况下,它们使得它们几乎无用(实际上我不是t看到tcgetsid()的重点.
任何人都有一个建议,我如何能够以一种理智的方式从C中检测终端当前是否是一个进程的控制终端?我只关心Linux,所以如果需要特定于Linux的API,那对我来说没问题.
我想以编程方式清除Linux控制台VT上的回滚缓冲区.即不仅清除当前可见屏幕,还清除整个回滚缓冲区.也就是说,使用Alt-PgUp仍然可以看到清晰屏幕之后的所有内容也应该消失.有人知道如何用漂亮的代码实现这一目标吗?
我正在寻找一种枚举所有ELF节及其当前二进制文件的地址以及当前进程可能已加载的所有共享对象的好方法。
我知道dl_iterate_phdr()的存在,这使我可以轻松使用ELF 段列表,但是我正在寻找ELF 节,所以这不是我的正确选择。
我不关心可移植性,只要它可在带有ELF的Linux上运行,我就很高兴!
任何提示表示赞赏!