POSIX标准下文件描述符与文件流的转换操作代码

注意FILENO()和FDOPEN()函数的作用,输入参数与返回值。

 1 #include <sys/stat.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <fcntl.h>
 5 #include <unistd.h>
 6
 7 int main(void)
 8 {
 9     int fd;
10     FILE *stream;
11
12     printf("stdin is:\t%d\n", fileno(stdin));
13     printf("stdout is:\t%d\n", fileno(stdout));
14     printf("stderr is:\t%d\n",fileno(stderr));
15
16     unlink("test.txt");
17     fd = open("test.txt", O_CREAT | O_WRONLY, S_IREAD | S_IWRITE);
18     printf("fd file no is : %d\n",fd);
19     stream = fdopen(fd, "w");
20     if(stream == NULL)
21         printf("fdopen failed.\n");
22     else
23     {
24         fprintf(stream, "Hello World!\n");
25         fclose(stream);
26     }
27     printf("the content of the test.txt is : \n");
28     system("cat test.txt");
29     return 0;
30 }
31 ~

输出:

[root@localhost ccode]# ./fdopen_example
stdin is:       0
stdout is:      1
stderr is:      2
fd file no is : 3
the content of the test.txt is :
Hello World!

时间: 2024-07-29 07:01:57

POSIX标准下文件描述符与文件流的转换操作代码的相关文章

Linux下利用文件描述符恢复的成功失败实验

    数据误删除是作为初级运维人员常常遇到的"低级错误",一些有经验的老手有时也在疲劳.不冷静的情况下"马失前蹄".一旦误删除数据文件,尽快采用影响最小.最迅速的手段恢复数据库是第一要务. 恢复数据的方法很多,比如冷热备份.闪回数据库等等,如果是直接从操作系统OS层面删除数据文件,在Linux/Unix环境下,有一些优选手段可以使用.其中之一就是文件描述符(File Description).   1.聊聊File Description   不同的操作系统,在实

文件句柄(file handles) &amp;amp; 文件描述符(file descriptors)

1.概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无所知,那么debug起来将会异常痛苦.在linux操作系统中,文件句柄(包括Socket句柄).打开文件.文件指针.文件描述符的概念比较绕,而且windows的文件句柄又与此有何关联和区别?这一系列的问题是我们不得不面对的. 博主通过翻阅相关资料,并采用了一些demo来验证相关观点.如果文中有理解偏差,欢迎指正,对linux内核不是很熟,

linux-Linux文件描述符相关问题?

问题描述 Linux文件描述符相关问题? Linux文件描述符是不是即包含文件地址也就是索引,也包含文件状态?不知道这样理解对不对? 解决方案 http://blog.sina.com.cn/s/blog_8e48f19a01013lrb.html 文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket.第一个打开的文件是0,第二个是1,依此类推.Unix 操作系统通常给每个进程能打开的文件数量强加一个限制. 相当于windows下的文件句柄 解决方案二: linux文件描述

简介Linux下的文件描述符

在C程序中,文件由文件指针或者文件描述符表示.ISO C的标准I/0库函数(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指针,UNIX的I/O函数(open, close, read, write, ioctl)使用文 件描述符.下面重点来说下,文件描述符是如何工作的. 文件描述符相当于一个逻辑句柄,而 open,close等函数则是将文件或者物理设备与句柄相关联.句柄是一个整数,可以理解为进程特定的文件描述 符表的 索引.先介绍下面三个

并发时-修改Linux系统下的最大文件描述符限制

通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n 1024 当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的session有效,当断开连接重新连接后更改就失效了. 如果想永久变更需要修改/etc/security/limits.conf 文件,如下: vi /etc/security/limits.conf * hard nofile 102400 * sof

linux exec和文件描述符妙用技巧(转)

  最近在看<精通unix shell脚本编程>时,看到exec<$1 exec 1>$OUTFILE,一下看的我就蒙了.网上看了大半天,终于搞定,记录如下.对于 Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的.文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程打开文件的记录表.当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数.通常,一个进程启动时,都会打开 3 个文件

[性能分析]linux文件描述符(转)

1.什么是文件和文件描述符   Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件.这些文件一般是用一些相关的应用程序创建,比如图像工具.文档工具.归档工具... .... 或 cp工具等.这类文件的删除方式是用rm 命令:2.目录文件

【MySQL】文件描述符导致报警一则

下午收到报警: xxxxxx:[didb..,][master,slave]/home used:94% free:0.6G 2014-01-12 16:42:40 DutyReceived! [现象] 登陆机器查看: [root@xxxxx /root] #df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda2              92G  4.2G   83G   5% / /dev/sda6    

linux中文件描述符fd和文件指针flip的理解

整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd(file descriptor)只是一个整数,在open时产生.起到一个索引的作用.每个进程在PCB(Process Control Block)即进程控制块中都保存着一份文件描述符表,文件描述符就是这个表的索引,文件描述表中每个表项都有一个指向已打开文件的指针,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp. 文件描述符的操作(如: