【发布时间】:2019-08-29 14:35:34
【问题描述】:
我需要调用我的外部程序。
但是,我只想加载一次;也就是说,
int proc(void *path) {
void *p;
// ...
//ELF loader
p = load_magic(path);
do {
register int t = fork();
if (!t) {
// push arguments and jump to entrypoint
exec_magic(p, _ARGS_); // execlp(path, _ARGS_);
_exit(-0x1);
}
// stuff
} while(CONDITION);
// ...
}
这可能吗?
【问题讨论】:
-
您实际上是在寻找应用程序二进制接口 (ABI) 吗?
-
“只加载一次”到底是什么意思?从磁盘读取,进入内存,即使在子进程退出后仍保留在那里,以便可以在下一次迭代中重用?那将是the sticky bit,大多数操作系统不再实现。
-
是的。我想将 ELF 加载到内存中,以便在迭代中重用它。似乎可以使用 Position Independent Executables : stackoverflow.com/questions/13908276/… ,因此我想知道是否有办法在一般图像上做同样的事情。
标签: c