c - 如何在 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);
}
和一些图片作为参考:
解决方案
我在错误的路径上,我需要编辑的文件是\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);
在函数中输入。
推荐阅读
- shell - Unix shell 脚本中的模式匹配
- mongodb - 从 MongoDB Vue.js 获取数据
- multithreading - 如何从我无法控制的线程中捕获内部错误?
- python - xgboost 中的 xgb.predict 和 xgb.predict_proba() 之间的区别?
- vue.js - 未捕获的错误:模块解析失败:意外的令牌 (1:0)。如何在vue中导入pdf文件?
- java - 如何在 BottomSheetDialog 中获取 ViewModel
- bitbucket - 根据 Jira 问题标签设置 Bitbucket 触发器
- python - Raspberry:根据 GPIO 状态显示各种图像
- python - ModuleNotFoundError:从 azureml.core 执行时没有名为“ruamel”的模块
- java - 如何对具有传递依赖的函数进行单元测试