⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 creat.c

📁 操作系统课程设计
💻 C
字号:

/*	文件创建函数creat()(creat.c)*/

#include <stdio.h>
#include "filesys.h"

int creat(user_id, filename, mode)
unsigned int user_id;
char * filename;
unsigned short mode;
{
	unsigned int di_ith, di_ino;
	struct inode * inode;
	int i,j;

	di_ino=namei(filename);  // 
	if (di_ino!=NULL)	/* already existed */
	{
		printf("该文件 %s 已经存在.\n",filename);
		return -1;
	}
	else /* not existed before */
	{
		inode = ialloc();   
		iget(inode->i_ino+1);
		di_ith=iname(filename);
		dir.size++;

		dir.direct[di_ith].d_ino=inode->i_ino;

		inode->di_mode = user[user_id].u_default_mode | DIFILE; //~~~~~edited

		inode->di_uid = user[user_id].u_uid;
		inode->di_gid=user[user_id].u_gid;//~~~~~
		inode->di_size=0;
		inode->di_number= 1;
		

		for(i=0;i<SYSOPENFILE;i++)
			if (sys_ofile[i].f_count==0)
			{
				break;
			}

		for (j=0; j<NOFILE; j++)
			if (user[user_id].u_ofile[j]==SYSOPENFILE+1)
			{
				break;
			}
		user[user_id].u_ofile[j]=i;
		sys_ofile[i].f_flag=mode;
		sys_ofile[i].f_count=0;
		sys_ofile[i].f_off=0;
		sys_ofile[i].f_inode=inode;
		printf("文件%s创建成功.\n",filename);
		return j;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -