- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个进程或线程的任务结构,迭代属于同一进程的所有其他线程的习惯用法是什么?
最佳答案
Linux 不区分进程(任务)和线程。库调用 fork() 和 pthread_create() 使用相同的系统调用 clone()。 fork() 和 pthread_create() 之间的区别在于传递给clone() 的位掩码。该位掩码描述了哪些资源(内存、文件、文件系统、信号处理程序......)。有关详细信息,请参阅 man clone(2)。
无论如何,有一个叫做线程组的东西,并且在clone()调用中有一个特殊的标志,它表明新进程属于同一个线程组。此机制通常用于将通过在位掩码中指定 CLONE_THREAD 的 clone() 创建的所有任务放在一起。对于此线程,linux/sched/signal.h
包含文件中存在宏 while_each_thread。它的使用方式如下:
struct task_struct *me = current;
struct task_struct *t = me;
do {
whatever(t);
} while_each_thread(me, t);
关于process - 内核:如何从进程的task_struct中查找所有线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457890/
我正在研究一种管理休眠进程的替代方法,为了我的实验,我需要制作一个修改过的 Linux 内核。对于我正在做的事情,我需要访问描述进程的 task_struct,即使它是当前正在运行的进程。我需要这样做
和这个问题有点关系: Direct access to structure task_struct from Usermode as root 编写了一个打印指向任务结构 (task_struct)
Task_struct 用于内核保存进程的必要信息。由于该结构,内核可以暂停一个进程,并在一段时间后继续执行它。但我的问题是:这个 task_struct 存储在内存中的什么地方(我读过内核堆栈,是在
内核 task_struct 如下所示。我对两个成员更感兴趣,即 children 和 sibling ,所以我从这个内核结构中删除了其他元素。 struct task_struct{
我有一个 task_struct *我通过调用 find_task_by_vpid(get_pid()) 得到的.我想弄清楚哪个用户拥有该进程,以便我可以在我正在编写的系统调用中进行一些权限检查,但要
我已经编写了在/proc 文件上读取和写入的模块,并且工作正常,但是当我创建下面所示的权限函数时,想要使用它的权限,它给了我错误(基本上我希望每个人都可以读取该文件,但是只有 root 可以写入)。
我正在尝试实现一个模块,该模块将 pid 作为输入并简单地打印该进程的一些属性。打印 sibling 的信息也是该模块的一部分。但是,当我进入第二或第三级叶进程时,它直接返回 pid=1 的父进程,即
我正在尝试编写一个内核模块来检测 fork 炸弹,为此,我想向 task_struct 添加一个字段 int descendantCount。到目前为止,这是我的代码: struct task_str
Linux中的task_struct中是否有成员可以统计进程中正在运行的线程总数? 我读到,在Linux中没有线程,但是如果我们检查任何进程目录(proc/[PID]/task)内的任务目录,就会发现
在一个模块中,我正在访问 task_struct 并返回 stime+utime。我想将它转换为毫秒。 stime 和 utime 将以什么格式出现在 task_struct 中。我也可以从/proc
我有一个家庭作业,我必须向 task_struct 添加一些条目并用它们做一些事情。此外,我必须在 task_struct 初始化时将一个条目初始化为特定的 int。 task_struct 第一次初
我想从 struct task_struct 中获取完整的进程名称。 comm 字段仅存储 16 个字符,而进程名称可以更长。有没有办法获得完整的进程名称? 这可以通过从task_struct获取st
我想获取有关任务的信息,例如任务的总执行时间(使用task_exec_time(task))、未运行的时间(task->sched_info.run_delay)以及调度程序调用任务的次数(任务->s
我读到线程使用 thread_info ,而 task_struct 是 thread_info 的成员,我怀疑进程也使用 thread_info 还是他们在为进程描述符条目分配内存时使用 task_
我正在尝试弄清楚流程是如何相互关联的。我知道 linux 内核使用循环链表 list_head 将不同的进程连接在一起,信息保存在一个名为 task_struct 的结构中。在 task_struct
我正在阅读 Linux 内核的 try_to_wake_up() 函数的源代码。这个函数做了很多事情,包括:return p->on_rq == TASK_ON_RQ_QUEUED。 那么,task_
在阅读 Linux 内核源代码时,我发现一件事让我感到困惑。 在task_struct中,是这样写的 struct task_struct { #ifdef CONFIG_THREAD_INFO_IN
我正在研究一些内核代码并试图了解数据结构是如何链接在一起的。我知道调度程序如何工作的基本概念,以及 PID 是什么。但是我不知道在这种情况下命名空间是什么,也无法弄清楚所有这些是如何协同工作的。 我已
sched.h 中 task_struct 中的 void *stack 声明是什么? ? 它是指向进程镜像(堆栈、堆、.bss、数据、文本)堆栈的指针吗?如果是这样,指向过程镜像其余部分的指针在哪里
我无法理解 Linux 中进程控制 block 和进程描述符之间的区别? 我看到这两种结构都被称为 task_struct,这些术语似乎可以互换使用 - 两者之间有什么区别? 非常感谢您的帮助! 最佳
我是一名优秀的程序员,十分优秀!