2013-09-26 24 views
0

我最近了解到unix中的exec()系统调用。考虑执行exec()的进程,并且“已转换的进程”再次执行exec()等。突然间,当前正在执行的任务失败,因此必须恢复前一个proc的上下文。exec系统调用中的级联失败

我的问题是,如果故障继续以层叠的方式发生,那么“原始”上下文仍然可用。换句话说,unix需要花费多少内存才能继续并保存上下文。

回答

1

exec()系列是取代系统调用 - 它们完全取代了原来的新进程,因此没有退路。为了保持原始上下文使用system()调用(这是fork()和exec()的包装)

+0

有人告诉我,如果替换的上下文失败,那么上一个上下文将被恢复。这不正确吗? – ishan3243

+0

不“恢复” - 它只是停留。您继续执行由exec返回的负面rcode。 –