当前位置: 技术问答>linux和unix
内核模块中写文件的问题
来源: 互联网 发布时间:2015-11-15
本文导语: 我在module中用如下的函数保存文件,file_name根据进程pid生成,是/root/model/pid int save_to_file(char *file_name) { struct file* filp = NULL; filp = filp_open(file_name,O_CREAT|O_WRONLY|O_APPEND,0600); if(IS_ERR(filp)||!filp->f_op||!...
我在module中用如下的函数保存文件,file_name根据进程pid生成,是/root/model/pid
int save_to_file(char *file_name)
{
struct file* filp = NULL;
filp = filp_open(file_name,O_CREAT|O_WRONLY|O_APPEND,0600);
if(IS_ERR(filp)||!filp->f_op||!filp->f_op->write){
printk("WARNING: File is null,%dn",PTR_ERR(filp));
return;
}
......
length_write = filp->f_op->write(filp,buffer,no_of_bytes,&filp->f_pos);
filp_close(filp,NULL);
}
当一个进程多次调用该函数时(每次系统调用之前就调用该函数),一开始若干次都成功的打开写入和关闭,但是总会在某一次出现打开文件失败,PTR_ERR为-2,并且往后所有对该文件的打开操作都失败了
int save_to_file(char *file_name)
{
struct file* filp = NULL;
filp = filp_open(file_name,O_CREAT|O_WRONLY|O_APPEND,0600);
if(IS_ERR(filp)||!filp->f_op||!filp->f_op->write){
printk("WARNING: File is null,%dn",PTR_ERR(filp));
return;
}
......
length_write = filp->f_op->write(filp,buffer,no_of_bytes,&filp->f_pos);
filp_close(filp,NULL);
}
当一个进程多次调用该函数时(每次系统调用之前就调用该函数),一开始若干次都成功的打开写入和关闭,但是总会在某一次出现打开文件失败,PTR_ERR为-2,并且往后所有对该文件的打开操作都失败了
|
是否有函数重入的问题呢???