这篇教程C++ write_inode函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中write_inode函数的典型用法代码示例。如果您正苦于以下问题:C++ write_inode函数的具体用法?C++ write_inode怎么用?C++ write_inode使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了write_inode函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: do_mkdirvoid do_mkdir(){ struct inode cur_dir,new_dir; char dirname[256]; struct dir_ent ent; scanf("%s",dirname); if(strcmp(dirname,".")==0 || strcmp(dirname,"..")==0) { printf("Error directory name./n"); return ; } get_inode(pwd,&cur_dir); /*分配一个inode给新的目录*/ new_dir.i_num=alloc_inode(); new_dir.i_start_sect=alloc_data(); /*分配一个数据扇区*/ new_dir.i_nr_sects=1; new_dir.i_pnum=pwd; new_dir.i_mode=2; new_dir.i_size=0; //给新目录增加默认目录项 ent.i_num=pwd; strcpy(ent.name,".."); add_entry(&new_dir,&ent); ent.i_num=new_dir.i_num; strcpy(ent.name,"."); add_entry(&new_dir,&ent); ent.i_num=new_dir.i_num; strcpy(ent.name,dirname); add_entry(&cur_dir,&ent); //写入inode数组中 write_inode(pwd,&cur_dir); write_inode(new_dir.i_num,&new_dir); }
开发者ID:wizardcypress,项目名称:fake-shell,代码行数:33,
示例2: mainint main(int argc, char **argv) { int devfd; // get the device from argv if(argc != 2) { fprintf(stderr, "need to pass in a device/n"); exit(1); } // open device devfd = open_device(argv[1], O_WRONLY); // find if there is enough space -- seek blocks * block size verify_device_space(devfd); // write the superblock write_superblock(devfd); // setup the inodes for / write_inode(devfd, 3, 1); // setup the inode for lost+found write_inode(devfd, 2, 2); // skip into file section // write directories for / ., .. struct rdfs_dirent *p = calloc(3, sizeof(struct rdfs_dirent)); struct rdfs_dirent *dirent = p; p->d_inode = 1; strcpy(p->d_name, "."); p++; p->d_inode = 1; strcpy(p->d_name, ".."); p++; p->d_inode = 2; strcpy(p->d_name, "lost+found"); write_directory(devfd, dirent, 3, 0); free(dirent); // write directories for lost+found ., .. p = calloc(2, sizeof(struct rdfs_dirent)); dirent = p; p->d_inode = 2; strcpy(p->d_name, "."); p++; p->d_inode = 1; strcpy(p->d_name, ".."); write_directory(devfd, dirent, 2, 1); free(dirent); return 0;}
开发者ID:fr0stbyte,项目名称:rdfs,代码行数:52,
示例3: do_write/* 将外部文件写入到镜像中 */void do_write(){ struct stat st; struct inode cur_dir,new_file; struct dir_ent ent; char buf[SECTOR_SIZE+10]; int i; FILE *fin; char filename[16]; scanf("%s",filename); if(stat(filename,&st)<0) { printf("No such file./n"); return ; } fin=fopen(filename,"rb"); get_inode(pwd,&cur_dir); new_file.i_num=alloc_inode(); new_file.i_pnum=pwd; new_file.i_size=st.st_size; new_file.i_mode=1; //标示为文件 ent.i_num=new_file.i_num; strcpy(ent.name,filename); add_entry(&cur_dir,&ent); u32 last_sector=0,cur_sector; u32 need=st.st_size/(SECTOR_SIZE-sizeof(u32))+1; new_file.i_nr_sects=need; //根据文件大小,逐个分配扇区来写入数据,并采用单链表方式连接各个扇区 for(i=0;i<need;i++) { cur_sector=alloc_data(); if(last_sector==0) { new_file.i_start_sect=cur_sector; }else{ //上一个扇区到这个扇区的指针 fseek(fimg,last_sector*SECTOR_SIZE+SECTOR_SIZE-sizeof(u32),SEEK_SET); fwrite(&cur_sector,sizeof(u32),1,fimg); } int nread=fread(buf,sizeof(char),SECTOR_SIZE-sizeof(u32),fin); if(nread<0) { printf("Read file %s error./n",filename ); return ; } fseek(fimg,cur_sector*SECTOR_SIZE,SEEK_SET); fwrite(buf,sizeof(char),nread,fimg); last_sector=cur_sector; } fseek(fimg,last_sector*SECTOR_SIZE+SECTOR_SIZE-sizeof(u32),SEEK_SET); u32 tmp=0; fwrite(&tmp,sizeof(u32),1,fimg); write_inode(new_file.i_num,&new_file); write_inode(cur_dir.i_num,&cur_dir);}
开发者ID:wizardcypress,项目名称:fake-shell,代码行数:52,
示例4: delete_filelongdelete_file(ext2_filsys fs, ext2_ino_t inode){ struct ext2_inode inode_buf; long retval; if ((retval = read_inode(fs, inode, &inode_buf))) { fprintf(stderr, "%s/n", error_message(retval)); return(retval); } inode_buf.i_dtime = time(NULL); if ((retval = write_inode(fs, inode, &inode_buf))) { fprintf(stderr, "%s/n", error_message(retval)); return(retval); } if ((retval = ext2fs_block_iterate(fs, inode, 0, NULL, release_blocks_proc, NULL))) { fprintf(stderr, "%s/n", error_message(retval)); return(retval); } ext2fs_inode_alloc_stats(fs, inode, -1); return(0);}
开发者ID:er13,项目名称:e2tools,代码行数:30,
|