首页 > 解决方案 > 如何在 Minix OS 中的 C 中打印文件路径?

问题描述

我必须exec在 Minix 操作系统中编辑系统调用,使其创建的每个进程都应该打印程序文件路径 + 程序名称:

例如,如果我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);
}

和一些图片作为参考:

这就是我输入 ls 时发生的情况

标签: coperating-systemsystem-callsminix

解决方案


我在错误的路径上,我需要编辑的文件是\usr\src\minix\minix\servers\vfs\exec.c,我正在尝试编辑\usr\src\minix\minix\lib\libsys\sys_exec.c

在正确的文件中,我可以访问函数fullpath内部调用的变量get_read_vp。我导入stdio.h然后printf("executing: %s\n", fullpath);在函数中输入。


推荐阅读