从 exec() 初始化的进程中调用函数

Call function from exec()-initialized process

假设我有以下程序:

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

没有。当您执行一个程序时,当前进程将完全被新进程取代。打开的文件描述符等环境因素会保留,但代码不会。不能在新进程中调用旧进程的函数。