【发布时间】:2014-04-23 08:11:58
【问题描述】:
我使用 Linux 2.1.57 中引入的函数 'prctl'。 我执行以下操作:
... // 函数 'prctl' 仅适用于 linux 并在版本中引入 #ifdef __linux__ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,57) prctl(PR_SET_PDEATHSIG,SIGKILL); #万一 #万一 ...但是如果我在较低版本的 linux 中运行我的二进制文件会发生什么? 程序会崩溃还是无法加载?
我是否需要通过运行时替换编译时间检查(使用 utsname()->release ) 或者同时使用编译和运行时检查
感谢您的帮助!
【问题讨论】:
-
Linux 2.1.57 是一个相当老的版本(1999 年)。大多数 linux 内核都比这更新。我只是假设,在 Linux 上,
prctl存在...... -
uname函数可能是一个好的开始。 -
Basile,是的,您的建议原则上是合适的。但我有点不明白如果我在旧版本上运行程序会崩溃(segfault)?
-
你怎么知道编译你的程序的 linux 版本和它实际运行的版本是一样的?
-
如果我在低版本的 linux 上运行我的二进制文件 - 首先,你必须为这个版本的 Linux 编译你的程序。
标签: c linux linux-kernel runtime compile-time