首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux环境下的open函数分析(一)

今天分享的是linux环境下open函数的解析,其实在前面的文章里面我只是简单的用了一下open函数的用法(因为自己也是刚开始在学习linux,不是很懂,大神勿喷,还请多指出不足之处),当然它还有好多用法和需要注意的地方...说到这里我又想起了man手册,哈哈,因为它可以在linux环境下查看命令和api以及库函数的具体用法,实在是太强悍了。...从上面我们可以大概看出O_APPEND和O_TRUNC的用法了,大概是: a、O_TRUNC属性去打开文件时,如果这个文件中本来是有内容的,则原来的内容会被丢弃。...我们来用代码来演示一下O_APPEND的用法: root@ubuntu-virtual-machine:/mnt/hgfs/day# ls a.out a.txt file file1.c linux...a.txt l love linuxroot@ubuntu-virtual-machine:/mnt/hgfs/day# 注:我在day目录下创建一个a.txt的文本文件,内容是 I love linux

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux系统IO】二、文件描述符与重定向

    .txt", O_WRONLY | O_CREAT | O_TRUNC, 0666); int fd4 = open("log4.txt", O_WRONLY | O_CREAT | O_TRUNC...大概可以看出来,fd 是按照顺序排列的,那么为什么第一个文件的 fd 不是 0 或者 1 呢,而是从 3 开始 ❓❓❓ ​ 还记得我们曾经学C语言的文件操作时候说过,每次我们打开一个 C 程序或者这么说,Linux...既然是数组的下标,那么是什么数组呢 ❓❓❓ ​ 其实在 linux 底层中是这样子的,每个进程的进程管理块 task_struct 中包含着一个 struct files_struct* files 指针指向...而每次 linux 进程都会默认生成三个文件描述符分别指向 stdin、stdout、stderr,下标分别为 0、1、2,这也是为什么我们每次打开或者创建一个新文件的时候,fd 都是从 3 开始的原因...下面我们来看看 linux 中的 files_struct 内核源码: ​ 对于 file_operations,不同硬件是有不同的方法的,大部分情况方法是和你的硬件驱动匹配的,虽然如此,但是最终文件通过函数指针实现你要打开的是磁盘

    6510

    【Linux】基础IO --- 系统级文件接口、文件描述符表、文件控制块、fd分配规则、重定向…

    进程可以打开多个文件,对于大量的被打开文件,操作系统一定是要进行管理的,也就是先描述再组织,所以操作系统会为被打开的文件创建对应的内核数据结构,也就是文件控制块FCB,在linux源码中是struct...24 const char* msg = "hello linux...五、Linux下一切皆文件 1....vfs层是Linux内核中的一个软件层,可以使得我们不关心底层硬件读写方式的差别,只用struct file中的函数指针即可管理对应的硬件的读写方式。...六、看看Linux内核源代码是怎么说的 1.下面是文件描述符表的固定个数 2.下面是文件描述符表的扩展个数 3.下面是云服务器下的文件描述符表的最多打开文件个数。

    1.3K30

    c语言用命令行打开文件_c语言无法打开文件

    linux 文件操作(打开及关闭) Linux文件描述符简介 当一个进程获取文件的访问权时,通常指打开一个文件时,内核返回一个文件描述符,进程可以通过文件描述符进行后续的操作。...文件描述符 0 1 2 这是linux系统保留的三个文件描述符。...在linux中对文件的访问通常有两种形式: 一 通过文件名作为参数操作文件; 二 通过文件描述符操作文件; 关闭文件 在linux c中 #include int close(int...,则创建文件; O_EXCL:这个参数同o_CREAT一起使用,如果文件存在,则open操作失败,使用这个命令,可以使open称为一个创建文件的命令; O_NOCITY:打开的文件不会成为控制终端; O_TRUNC...如果返回值大于0,则代表文件被成功打开,则返回路径名为pathname的文件描述符,否则打开异常,并会将错误号保存至stderr中 create =open(filename,O_CREAT|O_WRONLY|O_TRUNC

    3.5K20

    Linux系统进程编程(二)

    include int main() { // 首先打开一个文件 int fd = -1; pid_t pid = -1; fd = open("1.txt", O_RDWR | O_TRUNC...pid_t pid = -1; // fork创建子进程 pid = fork(); if (pid > 0) { // 父进程中 fd = open("1.txt", O_RDWR | O_TRUNC...哈哈哈,听到僵尸两个字是不是有点小害怕,言归正传,在Linux系统中,我们要明白:进程在运行时是需要消耗系统资源(内存、IO),进程终止时理应完全释放这些资源(如果进程消亡后仍然没有释放相应资源则这些资源就丢失了...),所以linux系统设计时规定:每一个进程退出时,操作系统会自动回收这个进程涉及到的所有的资源(譬如malloc申请的内容没有free时,当前进程结束时这个内存会被释放,譬如open打开的文件没有close...同时,linux系统规定:所有的孤儿进程都自动成为一个特殊进程(进程1,也就是init进程)的子进程。

    1.8K10

    【Linux】文件IO系统封装了 +【区分文件结构体FILE和file与files_srtuct表】(读写接口盘点与介绍)

    前言 大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含: ※学习文件IO必须知道的概念 1....file结构体:它代表一个打开的文件,是Linux内核中的结构体 区分: files_struct结构体:是Linux内核中定义的一个结构体,用于表示 进程级别 的文件描述符表,并记录了该进程当前打开的所有文件的信息...需要使用mode选项,来指明新文件的访问权限 O_APPEND: 追加写 O_TRUNC: 先清空文件内容 返回值: 成功:新打开的文件描述符 失败:-...mode_t: 权限设置 //按照写方式的打开,文件不存在就创建,但会先清空文件内容 int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC...//打开文件,只写 int fd = open("example.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644); //参数准备 int count = 5; const

    9910

    【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密

    前言:在Linux操作系统的广阔世界中,文件描述符(File Descriptor,简称fd)和重定向是理解并高效利用Linux IO(输入/输出)机制的关键基石。...掌握这些概念,将使你能够更深入地理解Linux如何管理文件、进程间的通信以及数据的流动,从而编写出更加高效、健壮的应用程序,同时在系统管理和脚本编写中也能游刃有余 文件描述符(fd),简而言之,是Linux...通过丰富的示例和详细的解释,读者将能够全面理解并掌握这些核心概念,进而在Linux编程和系统管理中更加得心应手 让我们一起,在Linux基础IO的海洋中扬帆起航,探索更多未知的精彩吧! 1....Linux的IO系统,通过文件描述符这一简洁而高效的抽象,使得进程能够灵活地与各种资源交互,都能通过统一的接口进行访问和管理 而重定向,则是Linux shell赋予我们的一柄利剑,它打破了传统IO...Linux的IO系统博大精深,文件描述符和重定向只是其中的冰山一角。

    19810

    基础IO的理解与操作 - fd

    (操作系统是硬件的管理者)(PS:想要更进一步了解Linux操作系统和进程之间的关系可以看一下这篇文章哦:【Linux】从冯诺依曼体系到初识Linux下的进程_柒海啦的博客-CSDN博客)        ...: void test5(){int fd = open("test.txt", O_RDWR | O_CREAT | O_TRUNC, 0666);  // 可读可写 没有此文件创建 打开文件前清空 ...("test1.txt", O_RDWR | O_CREAT | O_TRUNC, 0664);int fd3 = open("test2.txt", O_RDWR | O_CREAT | O_TRUNC...我们来测试一下: void test8()    {close(1);int fd = open("test.txt", O_RDWR | O_CREAT | O_TRUNC, 0666);if (fd...void test10()    {// 输出重定向    int fd = open("test.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);dup2(fd,

    79020

    初识Linux · 文件(1)

    前言: 本文以及下篇文章,揭露的都是Linux中文件的奥秘,对于文件来说,初学Linux第一节课接触的就是文件,对于C语言,我们使用fopen可以打开文件,对于C++,我们可以使用ofstream可以打开文件...那么在Linux中,我们还有一个创建文件的方式,除了使用函数,我们可以该指令: 创建文件,这是重定向符,这是我们所熟知的,那么为什么它可以重定向呢?...除了C++的可变模板参数可以解决,Linux中我们怎么解决呢?或着说,源码里面是怎么解决的?...那么我们先来看看这个宏: int main() { umask(0); int fd = open("test.txt",O_WRONLY | O_CREAT | O_TRUNC,0666...那么: 宏O_TRUNC和w模式之间的关系是什么? 2.fd的返回值有345,但是没有012,0对应的是标准输入,键盘,1和2对应的硬件都是显示器,但是1是标准输入,2是标准错误。

    8610
    领券