我有个疑问。
我打开内核并更改目录 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);
}
我编译了这个程序并执行并运行良好。但我不明白为什么“测试”没有出现在外壳上。我的意思是,如果当我重新启动电脑时出现了很多“测试”这个词,为什么当我执行上面的程序时这个词没有出现。只是补充一下,我在上面的代码中包含了这个库:
unistd.h
, fcntl.h
, stdio.h
,stdlib.h
感谢你们。