Linux内核:来自“open”系统调用的printk不起作用
|
我有个疑问. 我打开内核,然后更改了目录linux-3.1.1 / fs / open.c 我在open.c中更改了以下代码. SYSCALL_DEFINE3(open,const char __user *,filename,int,flags,mode)
{
long ret;
printk(KERN_EMERG "Testingn");
...
}
我只把这行:printk(KERN_EMERG“Testing”); 我包括库:< linux / kernel.h>和< linux / printk.h> 所以我编译并重新启动了我的linux(Ubuntu). 但现在我有一个问题. int main()
{
size_t filedesc = open("testefile2.txt",O_CREAT | O_WRONLY,0640);
printf("%d",filedesc);
}
我编译了这个程序并执行并且运行良好. unistd.h,fcntl.h,stdio.h,stdlib.h 感谢你们. 解决方法
我认为,这是printk消息抑制的效果. (更准确地说:限速) 检查消息日志或控制台 printk: ### messages suppressed. 串. 如果最近有很多消息,此功能将停止打印消息. 实际代码为3.1内核:http://lxr.linux.no/#linux+v3.1.1/kernel/printk.c#L1621 1621 * printk rate limiting,lifted from the networking subsystem. 1622 * 1623 * This enforces a rate limit: not more than 10 kernel messages 1624 * every 5s to make a denial-of-service attack impossible. 1625 */ 1626 DEFINE_RATELIMIT_STATE(printk_ratelimit_state,5 * HZ,10); 1627 1628 int __printk_ratelimit(const char *func) 所以,由于开放的系统调用非常受欢迎(只是做一个strace -e open / bin / ls – 我将获得15个开放的系统调用来启动最简单的ls),速率限制将生效.它将限制您的信息仅在5秒内打印一次;单个“爆发”中不超过10条消息. 我只能建议创建一个具有已知UID的特殊用户,并在printk中添加一个UID检查,并在其他printk-in-open代码中添加. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- LINUX实操:RAID磁盘阵列的搭建(以raid0、raid1、raid5、r
- linux – 客户端向服务器发送延迟FIN ACK(500ms)
- 使用来自Line IN的ALSA录制声音
- sql-server – FreeTDS – tsql连接,isql失败
- linux – 消息队列内容存储在哪里?
- linux中的jobs和ps命令有什么区别?
- 窗口放置:类似WinSplit Revolution的Linux应用程序(KDE)?
- 访问DOCUMENT_ROOT之外的PHP类文件
- 如何在linux中更改simplehttpserver上的端口?
- linux – 使用Vagrant从配置shell脚本更新.bashrc
