linux 文件操作编程

Linux中所有的设备和文件的操作都使用文件描述符来进行。

文件描述符是一个非负的整数,它是一个索引值,指向内核中每个进程打开的记录表。

当打开一个文件或者创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件的时候,就要把文件描述符作为参数传递给相应的函数。

一个进程时,都会打开3个文件:标准输入、标准输出和标准出错处理。分别对应文件描述符的0、1、2。

rename函数

#include <stdio.h>

int rename(const char *oldpath, const char *newpath);

说明:oldpath是文件的原路径, newpath是文件的新路径。

功能:文件重命名 。 返回值:运行成功返回0。

remove函数

#include <stdio.h>

int remove(const char *pathname);

说明:pathname是文件的路径。 功能:删除文件 。 返回值:运行成功返回0。

chown函数

#include <sys/types.h>

#include <unistd.h>

int chown(const char *path, uid_t owner, gid_t group);

说明:path是要修改文件的路径,owner指定的所有者, group是提定的文件组。 功能:修改文件的所有者 。 返回值:运行成功返回0,否则-1。

chmod函数。

#include <sys/types.h>

#include <sys/stat.h>

int (const char *path, mode_t mode); 说明:修改文件的访问权限

getcwd函数

#include <unistd.h>

char *getcwd(char *buf, size_t size);

说明:buf 是返回的目录名,buf 和size可以同时为设置0 返回值:成功是目录名 错误-1

#include<unistd.h>

#include<sdtio.h>

int main(int argc, char* argv[])

{

chdir("/tmp");

printf("current working directory: %s\n",getcwd(NULL,NULL));

}

执行 current working directory :/tmp

chdir函数 #include <unistd.h> i

nt chdir(const char *path);

说明:指定的目录路径。 功能:改变当前工作目录 。

返回值:运行成功返回0,否则-1。

opendir函数

#include <sys/types.h>

#include <dirent.h>

DIR *opendir(const char *name); 说明:指定的目录路径。

功能:打开目录 。

返回值:运行成功返回目录的目录流,否则NULL。

closedir函数

#include <sys/types.h>

#include <dirent.h>

int closedir(DIR *dir);

说明:已打开的目录。 功能:关闭已打开的目录 。

返回值:运行成功返回目录的目录流,否则NULL。

readdir函数

#include <sys/types.h>

#include <dirent.h>

struct dirent * readdir(DIR *dir);

说明:读取目录中一个文件的名字并将目录流指针后移。

功能:读取目录中一个文件的名字,并将目录流指针后移。

返回值:返回一个文件的名字,到目录尾或发生错误返回NULL。

struct dirent {

ino_t d_ino;

ff_t d_ff;

signed short int d_reclen;

unsigned char d_type;

char d_name[256];

};

telldir函数

#include <sys/types.h>

#include <dirent.h>

off_t telldir(DIR *dir); 说明:指定的目录流。 功能:获得指定目录流当前指针位置 。

返回值:运行成功返回当前指针位置,否则-1。

seekdir函数

#include <sys/types.h>

#include <dirent.h>

void seekdir(DIR *dir, off_t offset);

说明: dir是指定的目录流,offset是指定的指针位置 功能:设置指定的目录流的指针位置。

返回值:无。

fopen函数

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);

说明: mode是文件打开的模式,r以只读形式打开,r+可读写形式打开,文件内容被清空,a,以追加方式打开,文件不存则新建,a+追加可读写形式打开,文件不存则新建。

功能:打开文件,获取文件流指针 。 返回值:文件的流指针。

#include <stdio.h>

main(){

FILE * fp =fopen(0,”w+”);

fprintf(fp,”%s\n”,”hello!”);

fclose(fp);}

fclose函数

#include <stdio.h> int fclose(FILE *stream);

说明: 文件流指针。 功能:关闭已打开的文件 。

返回值:运行成功返回当前指针位置,否则EOF。

ftell函数

#include <stdio.h> long ftell(FILE *stream);

说明: 文件流指针。 功能:获取文件流指针当前的读写位置 。

返回值:运行成功返回当前读写位置,否则-1。

fseek函数

#include <stdio.h>

int fseek(FILE *stream, long offset, int whence);

说明: 文件流指针。

功能: stream是指定的文件流指针, offset是指定的读写位置,

whence是设置读写位置的基准 。 返回值:运行成功返回0,否则-1。

#include <stdio.h>

main(){

FILE * stream;long offset;

fpos_t pos;

stream=fopen(“/etc/passwd”,”r”);

fseek(stream,5,SEEK_SET);

printf(“offset=%d\n”,ftell(stream));

rewind(stream);

fgetpos(stream,&pos);

printf(“offset=%d\n”,pos);

pos=10;

fsetpos(stream,&pos);

printf(“offset = %d\n”,ftell(stream));fclose(stream);

}执行 offset = 5offset =0offset=10

feof函数

#include <stdio.h>

int (FILE *stream);

说明: 文件流指针。

功能:判断文件流指针的当前读写位置是否已达到文件尾 。

返回值:达到文件尾返回非0,否则0。

fgetc函数

#include <stdio.h>

int fgetc(FILE *stream);

说明: 文件流指针。

功能:从指定的文件流中读取一个字符 。

返回值:读到的字符,达到文件尾时返回EOF。

#include <stdio.h>

main(){

FILE*fp;

int c;

fp=fopen(“exist”,”r”);

while((c=fgetc(fp))!=EOF)

printf(“%c”,c);

fclose(fp);

}

fputc函数

#include <stdio.h>

int fputc(int c, FILE *stream);

说明: c是要写入的字符,stream是指定的文件流指针。

功能:将单个字符写入指定的文件流中 。 返回值:运行成功返回参数c,失败返回EOF

fgets函数

#include <stdio.h>

char *fgets(char *s, int size, FILE *stream);

说明: s是字符串读取后存放的首地址, size是存放字符串的数据体积,( size -1)。

功能:从指定的文件流中读取一个字符串 。 返回值:运行成功返回s,失败返回NULL。

fputs函数

#include <stdio.h>

int fputs(char *s, FILE *stream);

说明: S是要写入的字符,stream是指定的文件流指针。

功能:将字符串写入指定的文件流中 。

返回值:运行成功返回写入文件中字符的个数,失败返回EOF。

fread函数

#include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nmenb, FILE *stream);

说明: ptr是读取的数据在内存中存放地址, nmenb 是要读取的数据单元个数。

功能:从指定文件流中读取一段数据 。 返回值:实际读取到的数据单元个数。

fwrite函数

#include <stdio.h>

size_t  fwrite(void *ptr, size_t size, size_t nmenb, FILE *stream);

说明: ptr是读取的数据在内存中存放地址, nmenb 是要读取的数据单元个数。

功能:从将指定的一段数据写入指定文件流。 返回值:实际读取到的数据单元个数。

open函数

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int open(const char *pathname, int flags, mode_t mode);

O_RDONLY 以只读的形式打开文件,

O_WRONLY 以只写的形式打开文件,

O_RDWR 以可读写的形式打开文件;

O_CREAT 如果被打开文件不存在,则自动建立文件,

O_EXCL 与O_CREAT一起使用,若文件存在则报错;

O_TRUNC 以可写方式打开时,清空文件内容。

说明:pathname是要打开文件的路径,flags是标志位,mode用来指明文件的操作权限。

功能:打开指定文件,返回文件标识符。 返回值:成功 文件标识符 错误 -1

creat函数

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int creat(const char *pathname, mode_t mode);

说明: 相当于调用open()。

功能:创建新文件 。

返回值:运行成功返回文件标识符,失败返回0。

mktemp函数

#include <stdlib.h>

int mktemp(char *template);

说明:临时文件的文件名,最后六个字符必须为XXXXXX 。

功能:创建临时内存文件 。

返回值:运行成功返回文件标识符,失败返回0。

close关闭文件

#include <unistd.h>

int close(int fd);

read函数

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

说明:fd是文件标识符,buf是内存中的数据缓冲区,count是要读取数据的大小 。

功能:从指定的文件中读取数据 。

返回值:运行成功返回读取数据的长度(多少个字节),失败返回-1。

write函数

#include <unistd.h>

ssize_t write(int fd, void *buf, size_t count);

说明:fd是文件标识符,buf是内存中的数据缓冲区,count是要读取数据的大小 。

功能:将数据写入指定的文件中 。

返回值:运行成功返回读取数据的数据,失败返回-1。

lseek函数

#include <sys/types.h>

#include <unistd.h>

off_t lseek(int fd, off_t offset, int whence);

说明:fd是文件标识符,offset是移动的偏移量。

Whence是移动的基准位置 。

功能:修改文件的读写位置。

返回值:运行成功返回读写指针后文件实际读写位置的绝对量,失败返回-1。

fcntl函数

#include <sys/types.h>

#include <unistd.h>

#include <fcntl.h>

int fcntl(int fd, int cmd, struct flock *lock);

说明:fd是文件标识符,cmd 是命令,lock记录锁的具体状态。

功能:处理文件共享问题。 返回值:0 成功 -1 出错

select函数

#include <sys/types.h>

#include <unistd.h>

#include <sys/time.h>

int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout)

说明:numfds需要检查的号码最高的文件描述符加1,

readfds由select监视的读文件描述符集合,

writefds由select监视的写文件描述符集合,

errorfds由select监视的异常处理文件描述符集合,

timeout:NULL 永远等待,知道扑捉到信号或者描述符已准备好为止,具体指若等待位timeout时间还没有文件描述符准备好,就立即返回,0 从不等待,测试所有指定的描述符并立即返回。 功能:处理I/O复用问题。 返回值: 成功 准备好的文件描述符 -1 出错

pipe函数 #include <unistd.h>

int pipe(int filedes[2]);

说明:管道两端对应的文件标识符,fi

ldes[0]为读端的标识符, fildes[1]为写端的标识符。

功能:创建无名管道 。 返回值:运行成功返回0,失败返回-1。

mkfifo函数

#include <sys/types.h>

#include <sys/stat.h>

int mkfifo(const char *pathname, mode_t mode);

说明:pathname是管道的文件名,mode是管道的权限。

功能:创建有名管道,该管道被看作一个文件创建。

返回值:运行成功返回0,失败返回-1。

时间: 2024-10-25 00:21:39

linux 文件操作编程的相关文章

关于Linux文件操作1.1

本文章记录本人在学习Linux中遇到的一些比较好的题目,给大家分享一下. 先来实验题目: 编程实现一个程序,功能是每一秒钟向屏幕打印当前系统时间,和当前行号示例如下 该程序应该无限循环,直到强制中断该进程为止(比如按Ctrl-C中断程序).接着再启动程序,将系统时间追加到原文件之后,并且序号能够接续上次的序号: 好了看完题目后我们应该想的是,实现这么一个功能我们需要什么知识? 我们实现功能的逻辑是什么? 我们在写代码中有什么细节需要注意的(PS:使代码尽善尽美!) a):  先花五分钟想一下这个

linux文件操作

1.linux文件操作 cat test.txt | head -n 100 查看开始100行 cat finalout.txt | head -n 100 | cut -d , -f 2   安装,分割各行,取第2个位置的数据 cat test.txt |sed 's/""//g' 查看下效果 cat finalout.txt | head -n 10 | cut -d , -f 2 按,切割 cat part_name_tmp.txt | cut -d \" -f 2 &

Linux文件操作学习总结【转载】

本文转载自: http://blog.csdn.net/xiaoweibeibei/article/details/6556951 文件类型:普通文件(文本文件,二进制文件).目录文件.链接文件.设备文件.管道文件. 文件的权限:读.写.执行 文件的相关信息:目录结构.索引节点.文件数据 索引节点的stat结构 struct stat{ dev_t st_dev;//文件使用的设备号 ino_t st_inl;//索引节点号 mode_t st_mode;//文件访问权限 nlink_t st_

【API】文件操作编程-CreateFile、WriteFile、SetFilePointer

1.说明 很多黑客工具的实现是通过对文件进行读写操作的,而文件读写操作实质也是对API函数的调用. 2.相关函数 CreateFile : 创建或打开文件或I/O设备.最常用的I/O设备如下:文件,文件流,目录,物理磁盘卷,控制台缓冲,磁带驱动器,通信资源,邮槽,和管.函数返回一个句柄,可以根据文件或设备和指定的标志和属性来访问各种类型的I/O文件或设备. HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD dwDesire

Linux文件操作相关函数

一.整体大纲 st_mode整体介绍: st_mode详细介绍: 二. Linux文件操作相关函数 1. stat 作用:获得文件信息,也可以获取文件大小. 头文件 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> 函数原型 int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); i

Linux 文件操作总结

http://blog.163.com/he_junwei/blog/static/19793764620152592737741/ ioctl?? lseek?? 文件是linux中的一个重要概念.在Linux中,一切(几乎一切)都是文件.简单的说,C中基本的的printf()函数,scanf()函数,其实都属于文件操作. 对于文件操作,虽然都是通过函数调用的方式实现,却还是能分为两类:系统调用和库函数. 这篇文章将先介绍linux中文件的概念,系统调用和库函数的概念 ,然后具体的讨论两种方式

Linux 文件操作监控inotify功能及实现原理【转】

转自:http://blog.chinaunix.net/uid-26585427-id-5012973.html 1. inotify主要功能 它是一个内核用于通知用户空间程序文件系统变化的机制. 众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug.udev 和 inotify 就是

Linux文件操作的常用系统函数说明

1. open打开文件 (man 2 open 查看) int open(const char *pathname, int flags); //pathname文件名(路径):flags打开模式,有O_RDONLY, O_WRONLY, O_RDWR int open(const char *pathname, int flags, mode_t mode); //该函数一般用于创建新文件,flags添加O_CREAT,比如:O_RDWR|O_CREAT int creat(const cha

linux 文件操作库函数

fopen :打开文件 fread :读文件 fwrite : 写文件 fgetc : 读字符 fputc : 写字符 fscanf : 格式化读 fprintf : 格式化写 fseek : 文件偏移量定位 getcwd .getwd.get_current_dir_name : 获取当前路径 mkdir : 创建目录 feof : 检测文件尾 ferror : 检测文件操作是否成功 fileno : 将文件指针转换为文件描述符