我正在研究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"));
}
我无法想象如何在我的exec代码中检查这个。我正确检查了帧指针,可能缺少什么?
答案 0 :(得分:1)
指定为&#34; exec
&#34;的第一个参数的可执行文件;是从load()
函数中的start_process()
函数加载的。
提醒您,start_process()
是作为新创建过程的一部分运行的函数。该函数负责将可执行文件加载到内存中并开始执行它。
如果找不到可执行文件,则load()
函数将返回0
报告错误。在此之后,您需要释放为进程分配的所有内存,并通过调用exit()
系统调用或调用process_exit()
函数来结束它。
您可以先调试load()
函数的返回状态。