LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 860|回复: 4

如何在核心态写文件?

[复制链接]
发表于 2005-3-2 11:56:29 | 显示全部楼层 |阅读模式
想给系统添加一个系统调用,实现文件拷贝的功能。
但编译后可以生成文件,但是不可以写入文件。
文件大小为0,printk可以看到文件已打开了。
发表于 2005-3-2 17:29:06 | 显示全部楼层
没有写入权限!
这样看看
void kwrite(const char* name) {
sys_open(name, O_CREAT| O_RDWR, 0);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-2 18:39:58 | 显示全部楼层
不行啊。还是写不进去!

附:源程序:
#define BUFSIZE 512
asmlinkage long sys_mycopy(const char *to, const char *from)
{
int fd1, fd2;
char buf[BUFSIZE];
int n;

fd1 = sys_open(from, O_RDONLY, 0);
printk("<1>fd: %d\n", fd1);
if (fd1 == -1)
return -1;
fd2 = sys_creat(to, 0666);
printk("<1>fd2: %d\n", fd2);
if (fd2 == -1)

return -1;

while ((n = sys_read(fd1, buf, BUFSIZE)) > 0) {
if(sys_write(fd2, buf, n) != n)
return -1;
}
}
回复 支持 反对

使用道具 举报

发表于 2005-3-2 23:39:42 | 显示全部楼层
fd1 = sys_open(from, O_RDONLY, 0);
这样打开当然不能写.你是以只读方式打开的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-3 11:00:37 | 显示全部楼层
这是源文件啊。to是目标文件啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表