首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    系统编程-简洁而不简单的文件操作

    来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 我们都听过Linux下一切皆文件,实际上无论是普通的文件读写,还是网络IO读写,它们都有着类似的操作过程。...本文通过基本文件IO操作,来了解Linux“一切文件”的读写。当然过程中穿插着很多其他内容。 文件I/O过程 在介绍具体的函数使用之前,我必须说明一下文件I/O的基本过程。...通常0是标准输入,1是标准输出,2是标准错误(参考《如何理解Linux shell中“2>&1”》)。正是有了它们,你的简单程序才可以从控制台读入数据,输出日志,输出错误打印等等。...因此修改open函数那一行: int fd = open("test.txt",O_WRONLY | O_CREAT); 运行结果: open ok 并且会在test.txt发现写入的内容。...在打开的文件后追加内容 如果想在打开的文件后追加内容,那么可以使用O_APPEND标志: int fd = open("test.txt",O_WRONLY | O_CREAT | O_APPEND);

    46610

    Linux进程间通信(一) - 管道

    管道(pipe) 普通的Linux shell都允许重定向,而重定向使用的就是管道。...由于Linux中所有的事物都可被视为文件,所以对命名管道的使用也就变得与文件操作非常的统一,也使它的使用非常方便,同时我们也可以像平常的文件名一样在命令中使用。...); open(const char *path, O_WRONLY | O_NONBLOCK); 在open函数的调用的第二个参数中,你看到选项O_NONBLOCK,选项O_NONBLOCK表示非阻塞...对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的...(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。

    3K70

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

    linux 文件操作(打开及关闭) Linux文件描述符简介 当一个进程获取文件的访问权时,通常指打开一个文件时,内核返回一个文件描述符,进程可以通过文件描述符进行后续的操作。...文件描述符 0 1 2 这是linux系统保留的三个文件描述符。...在linux中对文件的访问通常有两种形式: 一 通过文件名作为参数操作文件; 二 通过文件描述符操作文件; 关闭文件 在linux c中 #include int close(int...fcntl.h> #include 参数说明: pathname:需打开文件的路径全称; flags:打开文件的操作类型: O_RDONLY 只读模式打开 O_RDWR 可读可写 O_WRONLY...返回值: 如果返回值大于0,则代表文件被成功打开,则返回路径名为pathname的文件描述符,否则打开异常,并会将错误号保存至stderr中 create =open(filename,O_CREAT|O_WRONLY

    3.5K20

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

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

    1.2K30

    Linux系统编程:基本IO系统调用

    文件描述符 表示 宏 0 标准输入(stdin) STDIN_FILENO 1 标准输出(stdout) STDOUT_FINENO 2 标准错误(stderr) STDERR_FILENO 遵循Linux...Linux提供了系统调用open()。...flags参数用于指定打开的方式,它支持三种访问模式: 访问模式 描述 O_RDONLY 打开一个供读取的文件 O_WRONLY 打开一个供写入的文件 O_RDWR 打开一个可供读写的文件 flags...("file.txt,0644"); /*两个语句的作用完全等价*/ 由于选项O_WRONLY|O_CREAT|O_TRUNC组合经常使用,因而系统调用专门使用creat函数来提供这个功能。...Linux系统也支持强制文件立即写入磁盘上,这在后面介绍。 close()系统调用 程序完成文件的读写后,调用close函数关闭文件描述符与文件之间的连接,使得文件描述符可以被重用。

    3K30

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

    今天分享的是linux环境下open函数的解析,其实在前面的文章里面我只是简单的用了一下open函数的用法(因为自己也是刚开始在学习linux,不是很懂,大神勿喷,还请多指出不足之处),当然它还有好多用法和需要注意的地方...说到这里我又想起了man手册,哈哈,因为它可以在linux环境下查看命令和api以及库函数的具体用法,实在是太强悍了。...mode_t mode); The argument flags must include one of the following access modes: O_RDONLY, O_WRONLY...后面你再对文件写操作的话,系统是不允许这样做的),这里我们可以看到在打开文件的时候,有三种权限设置: 1)O_RDONLY:表示只读,也就是文件只能读,不能写入 2)O_RDWR:表示既可以读又可以写 3)O_WRONLY...already exists and is a regular file and the access mode allows writing (i.e., is O_RDWR or O_WRONLY

    1.6K30

    Linux】基础IO ——文件(上)

    .); 指定文件流,向文件打印 指定文件流fp,而fp打开的文件为log.txt,所以将msg数据打印到log.txt文件中 ---- 因为Linux中一切皆文件,所以也可以传入stdout(标准输出流...--- 类比上述 open的第二个参数flag ,存在多个标志位,同通过宏来实现,每一个标志位都代表不同的值 新创建文件权限不正确 ---- O_CREAT :文件不存在就打开,不存在就创建一个文件 O_WRONLY...} ---- 运行可执行程序,发现 ---- 假设log.txt文件不存在,通过创建文件并打开文件,发现新文件的权限不正常 ---- 因为在Linux...> #include #define LOG "log.txt" int main() { int fd=open(LOG, O_WRONLY...> #define LOG "log.txt" int main() { umask (0);//将权限掩码设置成0 int fd=open(LOG, O_WRONLY

    72710

    进程间通讯(四).非亲缘进程间交互信号

    前言 UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了 进程间通信,Inter process...communication,简称 IPC,在 UNIX/Linux 下主要有以下几种方式: 无名管道 ( pipe ) 有名管道 ( fifo ) 信号 ( signal ) 信号量 ( semaphore...//mkfifo 等相关函数的原型声明 #include //EEXIST,errno 等相关函数的原型声明 #include //open,O_RDONLY,O_WRONLY...#include //getpid,write,read,sleep,close 等相关函数的原型声明 #include //open,O_RDONLY,O_WRONLY...*wfifo="/tmp/abfifo"; int rfd=0,wfd=0,res=-1,sig=40; //进行各种变量的初始化 if(-1 == (wfd = open(wfifo,O_WRONLY

    98210
    领券