免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2137 | 回复: 7
打印 上一主题 下一主题

C 文件与文件夹的几个的问题,乱了。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-12 09:39 |只看该作者 |倒序浏览
1:linux下,一切都是文件,什么意思?

     这些文件都是是 通过 open(*,*);建立的吗?

     j假如我建立一个视频,也可以用open(*,*)吗?

     好像不是吧,建立文件夹是 mkdir(*,*);阿?

     还是说,虽然都是文件,但不通类型用不同方法建立文件?

     我理解,不管是什么东西,都可以通过<stdio.h> 里面的函数,

     如read,open,wire来操作对么?

2:文件夹中建立文件。
   
      c程序中:

      char【】=“/home/data/data.txt"
   
      open(char,O_RDWR | O_APPEND | O_CREAT);

      假如/home/data 都存在,我能建立文件。

      那么data 不存在,是需要mkdir(*,*) 之后,再chdir(*),再open(*,*)么?

      程序中需要建立目录,切换目录,建立文件夹么? 怎么感觉和shell中一样了呢?

论坛徽章:
0
2 [报告]
发表于 2011-04-12 13:59 |只看该作者
1、一些都是文件,大多数情况下,只需使用5个基本函数:open, close, read, write, ioctl.
2、代码中可以创建文件,不存在则会新建;而shell感觉是调用了底层的函数而已。

个人理解……可能有误。

论坛徽章:
0
3 [报告]
发表于 2011-04-13 18:03 |只看该作者
文件和文件夹的操作函数是不一样的。LZ可以试验下

论坛徽章:
0
4 [报告]
发表于 2011-04-13 19:55 |只看该作者
linux下,一切都是文件,是指linux kernel在实现文件/文件夹和设备/虚拟设备/Socket等的时候将所有的东东都统一封装到了一个通用的层,这个层正好利用了文件系统的系统调用。也即都可以通过一个统一的系统调用来打开,读写,关闭。如此而已!有空看看内核代码就明白了...

论坛徽章:
0
5 [报告]
发表于 2011-04-15 09:51 |只看该作者
多谢4楼。

我一直在看。

加入在C程序中,建立一个目录a,在目录中建立文件b。

流程是怎么样的?

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
6 [报告]
发表于 2011-04-15 19:44 |只看该作者
int status;

        status = mkdir("testdir",0700);
        if(status==-1)
                printf("error\n");
        else
        {
                int sta=chdir("./testdir/");
                printf("%d\n",sta);
                int fd=open("testfile",O_RDWR|O_CREAT);
                                printf("%d\n",fd);
        }

这就是最简单的一个例子,先建立一个文件夹,然后进去,创建一个文件

注意失败情况

www.crazyhadoop.com

论坛徽章:
0
7 [报告]
发表于 2011-04-16 08:45 |只看该作者
linux下一切皆文件,指的是一种形上面的相似,而不是实际实现的做法。它的意思是指对绝大多数对象的访问都封装成类似于对文件的访问接口一样。
比如,都支持 “打开” “创建” “关闭”这几个操作。
那么就可以引申出 openfile closefile这些针对文件的操作。
或者opendir closedir这样的操作。
实际对应到代码和数据结构上,文件和目录是有严格区别的。
不知道说清楚没?

个人觉得这种设计理念的好处是:
第一:不同API的底层都能用一个统一的system call来实现,比如write, read这些操作。
第二:对于开发人员而言,容易形成似曾相识的感觉,也就是说,只要你坚持这一风格,开发人员很容易接受和理解新的东西。

论坛徽章:
0
8 [报告]
发表于 2011-04-20 14:19 |只看该作者
一切都是文件,关键是操作系统有一个虚拟文件系统的抽象层,没有这个层就不可能做到一切皆文件,具体原理请去看 linux内核情景代码分析。里面全部都是数据机构和函数指针。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP