我正在尝试将简单的防火墙实现为linux内核模块,它使用procfs与用户空间应用程序(用python编写)进行通信。一切正常,但从/ proc / file读取。
这是我在客户端上执行的代码:
if os.path.isfile(PROCFS_PATH) and os.access(PROCFS_PATH,os.R_OK):
myfile = open(PROCFS_PATH,'r')
for line in myfile:
print line.rstrip("\n")
myfile.close()
这只是一个简单的印刷品。
这是来自内核模块的proc readfile:
static ssize_t procRead(struct file *fp, char *buffer, size_t len, loff_t *offset){
static int finished = 0;
if(finished)
{
printk(KERN_INFO "proc read finished. Read: %s\n", buffer);
finished = 0;
return 0;
}
finished = 1;
if(copy_to_user(buffer, buf, procBuffSize))
return -EFAULT;
printk(KERN_INFO "read %lu bytes\n", procBuffSize);
return procBuffSize;
}
猜猜,它应该没问题,但问题是我在尝试阅读时在我的客户端中遇到了MemoryError。在momment / proc / file包含简单的防火墙规则,包含20个字符,因此文件大小不会有问题。什么是?