0

我正在从事 Pintos Project #2。我已经实现了大部分系统调用。在 exec 系统调用中,有一个测试 exec-missing 根据文件中的注释检查:

    /* Tries to execute a nonexistent process.
   The exec system call must return -1. */

#include <syscall.h>
#include "tests/lib.h"
#include "tests/main.h"

void
test_main (void) 
{
  msg ("exec(\"no-such-file\"): %d", exec ("no-such-file"));
}

我想不出我们如何在我的执行代码中检查这个。我已经正确检查了帧指针,可能缺少什么?

4

1 回答 1

1

指定为“”的第一个参数的可执行文件是从函数中存在的函数exec加载的。load()start_process()

提醒您,start_process()作为新创建进程的一部分运行的函数是 where 。该函数负责将可执行文件加载到内存中并开始执行。

如果未找到可执行文件,则该load()函数将通过返回来报告错误0。在此之后,您需要释放为进程分配的所有内存,并通过调用exit()系统调用或调用process_exit()函数来结束它。

您可以从调试load()函数的返回状态开始。

于 2016-01-27T17:17:40.337 回答