小编Ale*_*dro的帖子

__ctype_b_loc它的目的是什么?

我试图理解一段使用的代码__ctype_b_loc(),问题是我不知道这个函数的目的是什么.

到目前为止,我发现它的定义是在ctype.h.我还找到了它的原型和实现.我仍然不知道这个功能是什么.

有人能让我高兴吗?

glibc reverse-engineering

5
推荐指数
2
解决办法
5026
查看次数

Linux 进程/线程可以在不通过 do_exit() 的情况下终止吗?

为了验证我想要使用的第三方二进制分布式软件的行为,我正在实现一个内核模块,其目标是跟踪该软件生成和终止的每个子项。

目标二进制文件是 Golang 生成的二进制文件,并且它是多线程的。我编写的内核模块在内核函数_do_fork()do_exit()上安装了钩子,以跟踪该二进制文件生成和终止的每个进程/线程。

LKM 或多或少是有效的。

然而,在某些情况下,我会遇到无法解释的情况。看起来进程/线程可以在不通过do_exit()的情况下终止。

我通过printk()收集的证据显示了进程创建,但并不表明进程终止。

我知道printk()可能会很慢,而且我也知道在这种情况下消息可能会丢失。

为了防止由于控制台缓慢而导致消息丢失(对于这个特定的应用程序,使用了串行 tty 115200),我尝试实现一个更快的控制台,并使用netconsole收集消息。

所描述的设置似乎确认进程可以终止而无需通过do_exit()函数。

但因为我不确定我的消息不会在printk()基础设施上丢失,所以我决定重复相同的测试,但用ftrace_printk( ) 替换 printk( ) ,这应该是printk()的更精简的替代方案。

仍然是相同的结果,偶尔我看到进程没有通过do_exit(),并验证 PID 当前是否正在运行,我必须面对它没有运行的事实。

另请注意,我将挂钩放在do_exit()内核函数中作为第一条指令,以确保函数流不会在被调用函数内终止。

我的问题如下:

Linux 进程可以在其流程不经过do_exit()函数的情况下终止吗?

如果是这样,有人可以告诉我这种情况会是什么吗?

linux multithreading exit linux-kernel printk

3
推荐指数
1
解决办法
1172
查看次数