假设我有以下程序:
//gcc a_program.c -o a_program
void foo() {
printf("foo called\n");
}
int main(int argc, char** argv) {
execvp("some_other_program", argv);
}
//gcc some_other_program.c -o some_other_program
int main(int argc, char** argv) {
foo();
}
有没有办法从execvp()
创建的新流程图像中调用foo? dlsym()
仅适用于作为动态库加载的二进制文件 - 至少根据手册页 - 所以我不能只在新进程中搜索符号,即使它存在。
答案 0 :(得分:2)
没有。执行程序时,当前进程完全被新进程替换。保留开放文件描述符等环境因素,但代码不是。您无法通过新流程中的旧流程调用函数。