c - 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()
会覆盖旧的上下文......旧的进程映像是否在某处备份?我正在学习的材料没有提到它,谷歌搜索也没有帮助,谢谢!
解决方案
推荐阅读
- autodesk-forge - Forge 查看器:如何修复从模型浏览器中选择的隐藏模型未定义的“toggleVisibility”?
- python - 是否可以检测成对连接的像素?
- r - 使用 Google Chrome 和 Mozilla 在闪亮的应用程序中渲染传单标记的问题
- css - 具有单独构建的 Webpack 2 html 文件
- xslt - XSLT 分组:前 10 个元素作为组,后 10 个元素作为第二个不同的组名
- java - Activity被销毁并锁屏后如何连续运行后台服务
- python - 使用 subprocess.run 如何将每个循环的数据保存在不同的文件中?
- java - 如何防止服务在 Catalina 启动之前启动
- python - 如何插入到html表的特定列
- javascript - 一次将单个对象导出到 JSON 文件中的对象数组