STDOUT_FILENO 1 标准输入
STDIN_FILENO 0 标准输出
STDERR_FILENO 2 标准错误
在/proc目录下的进程文件中,有一个fd的目录记录每打开一个文件里面会有一个文件标示文件,名称以数字开始0 ,1,2....最大好像是65535
包括标准输入,输出,错误字符设备文件
/dev/pts/1
/dev/pts/1 标准输出设备1表示第一个ssh远程连接的编号,
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。
pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);
flags 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h)通过逻辑位或逻辑构成。
O_RDONLY只读模式
O_WRONLY只写模式
O_RDWR读写模式
O_CREAT若欲打开的文件不存在则自动建立该文件。
O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符 号连接,则会打开文件失败。
O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。
O_TRUNC若文件存在并且以可写的方式打开时,此标志位会令文件长度清为0,而原来存于该文件的资料也会消失。
O_APPEND当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。
O_NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。
O_NDELAY同O_NONBLOCK。
O_SYNC以同步的方式打开文件。
O_NOFOLLOW如果参数pathname所指的文件为一符号连接,则会令打开文件失败。
O_DIRECTORY如果参数pathname所指的文件并非为一目录,则会令打开文件失败。
参数mode
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
int main(void)
{
char a[] = {"abc.txt"};
int fd = open(a , O_RDONLY);
if(fd == -1)
{
printf("%s
" , strerror(errno));//判断open是否成功
}
else
{
printf("%d
" , fd);
close(fd);//打开完毕后记得关闭文件
}
return EXIT_SUCCESS;
}