linux - 获取进程信息(当前进程、父进程、最早的子进程)
问题描述
我有一个关于在 Linux 内核中添加系统调用的练习,但我正在努力实现它。以下是说明:
这个任务的主要部分是实现一个新的系统调用,让用户确定有关当前进程、父进程和最旧子进程的信息。我设法做了很多,但我不知道如何找到最古老的子进程。这是我的代码:
#include <linux/unistd.h>
#include <linux/linkage.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/uaccess.h>
#include <linux/sched/signal.h>
struct proc_info {
pid_t pid;
char name[16];
};
struct procinfos {
long studentID;
struct proc_info proc;
struct proc_info parent_proc;
struct proc_info oldest_child_proc;
};
asmlinkage long sys_get_proc_info(pid_t pid, struct procinfos *info){
struct task_struct *task = pid_task ( find_vpid ( pid ) , PIDTYPE_PID);
printk("Finding...\n");
for_each_process(task) {
printk("[%d] ------- [%s]\n", task->pid, task->comm);
if(task->pid == pid) {
struct procinfos buff;
buff.studentID = 1952598;
buff.proc.pid = task->pid;
buff.parent_proc.pid = task->parent->pid;
int res = copy_to_user(info, &buff, sizeof(buff));
if(res == 0) printk("success!");
else printk("fail");
return 0;
//}
}
}
return -1;
}
如何实现这个系统调用?谢谢
解决方案
推荐阅读
- database - 可视化代码无法访问 sqflite 包并且不会自动检测命令
- javascript - JS和Jquery中的多个OR类型的字符串数组
- python - FLASK 服务器在将上下文传递给模板时出现内部服务器错误
- node.js - 使用 Flask(数据处理服务器)和 Node.js(RESTful API)来服务数据分析服务器是一个好主意吗?
- java - Spring kstreams 无法让处理器工作 - 类“[B”不在受信任的包中
- git - git reset --hard 意外删除了本地文件
- python - Django 管理面板 css 在数字海洋服务器中未按预期工作
- javascript - Chrome 扩展程序 | 单击按钮时将内容脚本从外部源加载到 chrome 扩展
- recaptcha - 如何获取 Contact Form 7 的密钥 reCaptcha
- reactjs - 如何使用 react.js 前端的 fetch 或 XMLHttpRequest 管理烧瓶登录?