gpt4 book ai didi

c - Linux 内核:来自 "open"系统调用的 printk 不起作用

转载 作者:IT王子 更新时间:2023-10-29 00:45:53 27 4
gpt4 key购买 nike

我有疑问。

我打开了内核,我更改了目录linux-3.1.1/fs/open.c

我更改了 open.c 中的以下代码。

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
{
long ret;
printk(KERN_EMERG "Testing\n");
...
}

我只放了这一行:printk(KERN_EMERG "Testing");

我还包括库:<linux/kernel.h><linux/printk.h>

所以我编译并重新启动了我的 linux(Ubuntu)。在重新启动期间,屏幕上出现了很多“测试”。所以到现在为止没问题。


但是现在我遇到了一个问题。我用 c 创建了这个程序。

int main()
{
size_t filedesc = open("testefile2.txt",O_CREAT | O_WRONLY,0640);
printf("%d",filedesc);
}

我编译并执行了这个程序,效果很好。但我不明白为什么 "Testing" 没有出现在 shell 上。我的意思是,如果当我重新启动电脑时出现了很多“测试”这个词,为什么当我执行上面的程序时这个词没有出现。只是补充一下,我在上面的代码中包含了这个库:

unistd.h , fcntl.h , stdio.h , stdlib.h

谢谢你们。

最佳答案

printk 调用出现在内核消息缓冲区中,而不是在您进程的标准输出/标准错误中

关于c - Linux 内核:来自 "open"系统调用的 printk 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190575/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com