小编Use*_*erJ的帖子

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

我有个疑问.

我打开内核,然后更改了目录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");
    ... 
}
Run Code Online (Sandbox Code Playgroud)

我只把这一行: 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);
}
Run Code Online (Sandbox Code Playgroud)

我编译了这个程序并执行并且运行良好.但我不明白为什么"测试"没有出现在shell上.我的意思是,如果我重新启动电脑时会出现很多"测试"这个词,为什么当我执行上面的程序时,这个词并没有出现.只是添加我在上面的代码中包含这些库:

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

感谢你们.

c linux system-calls linux-kernel printk

6
推荐指数
2
解决办法
2039
查看次数

标签 统计

c ×1

linux ×1

linux-kernel ×1

printk ×1

system-calls ×1