从 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()
仅适用于作为动态库加载的二进制文件 - 至少根据手册页 - 所以我不能只在新进程中搜索符号,即使它存在。
没有。当您执行一个程序时,当前进程将完全被新进程取代。打开的文件描述符等环境因素会保留,但代码不会。不能在新进程中调用旧进程的函数。
假设我有以下程序:
//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()
仅适用于作为动态库加载的二进制文件 - 至少根据手册页 - 所以我不能只在新进程中搜索符号,即使它存在。
没有。当您执行一个程序时,当前进程将完全被新进程取代。打开的文件描述符等环境因素会保留,但代码不会。不能在新进程中调用旧进程的函数。