从exec()调用函数 - 初始化过程

时间:2016-02-09 20:04:58

标签: c exec

假设我有以下程序:

//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()仅适用于作为动态库加载的二进制文件 - 至少根据手册页 - 所以我不能只在新进程中搜索符号,即使它存在。

1 个答案:

答案 0 :(得分:2)

没有。执行程序时,当前进程完全被新进程替换。保留开放文件描述符等环境因素,但代码不是。您无法通过新流程中的旧流程调用函数。