PINTOS 中的 exec-missing 需要做什么检查
What check to make in exec-missing in PINTOS
我正在从事 Pintos 项目 # 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
”第一个参数的可执行文件是从 start_process()
函数中存在的 load()
函数加载的。
提醒您,start_process()
是 运行 作为新创建进程的一部分的函数。该函数负责将可执行文件加载到内存中并开始执行。
如果没有找到可执行文件,那么load()
函数会通过returning 0
报错。在此之后,您需要释放为进程分配的所有内存,并通过调用 exit()
系统调用或调用 process_exit()
函数来结束它。
您可以从调试 load()
函数的 return 状态开始。
我正在从事 Pintos 项目 # 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
”第一个参数的可执行文件是从 start_process()
函数中存在的 load()
函数加载的。
提醒您,start_process()
是 运行 作为新创建进程的一部分的函数。该函数负责将可执行文件加载到内存中并开始执行。
如果没有找到可执行文件,那么load()
函数会通过returning 0
报错。在此之后,您需要释放为进程分配的所有内存,并通过调用 exit()
系统调用或调用 process_exit()
函数来结束它。
您可以从调试 load()
函数的 return 状态开始。