【发布时间】:2020-07-05 23:51:24
【问题描述】:
我必须在 Minix 操作系统中编辑 exec 系统调用,使其创建的每个进程都应该打印程序文件路径 + 程序名称:
例如,如果我在终端中输入ls,下一行应该显示path/to/ls/ls
始终采用这种格式:filepath/programName。
我已经设法打印了程序名称,但文件路径有问题。谁能告诉我如何打印?
这是 sys_exec.c 的代码:
#include "syslib.h"
#include "stdio.h" //I included this library
int sys_exec(endpoint_t proc_ep, vir_bytes stack_ptr, vir_bytes progname,
vir_bytes pc, vir_bytes ps_str)
{
/* A process has exec'd. Tell the kernel. */
message m;
m.m_lsys_krn_sys_exec.endpt = proc_ep;
m.m_lsys_krn_sys_exec.stack = stack_ptr;
m.m_lsys_krn_sys_exec.name = progname;
m.m_lsys_krn_sys_exec.ip = pc;
m.m_lsys_krn_sys_exec.ps_str = ps_str;
//edited by me
puts((char*)progname);//this prints the program name
return _kernel_call(SYS_EXEC, &m);
}
还有一些图片作为参考:
【问题讨论】:
-
好吧,
char*演员应该感觉很糟糕,因为它是错误的。 -
我更新了帖子中的图片,它不再打印乱码了。代码还是一样,只需要重新编译内核来更新我所做的更改。
-
乱码是因为我上次尝试打印文件路径失败
标签: c operating-system system-calls minix