首页 > 解决方案 > execv() 失败时如何切换回上下文?

问题描述

所以execv用新的进程映像替换调用进程映像,但是当失败时,如何恢复旧的进程映像呢?例如,以下代码将产生错误消息:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char * argv[]){

  char * ls_args[2] = {"nonsense", NULL} ;
  execv( ls_args[0], ls_args);

  //only get here if exec failed                                                                                                                                             
  perror("execve failed");
  return 2;                                                                                                                             
}

我知道内核调度程序管理一组并发进程的上下文,但execv()会覆盖旧的上下文......旧的进程映像是否在某处备份?我正在学习的材料没有提到它,谷歌搜索也没有帮助,谢谢!

标签: cexec

解决方案


推荐阅读