`
java-mans
  • 浏览: 11454487 次
文章分类
社区版块
存档分类
最新评论

Linux学习笔记七:文件操作(系统调用方式)

 
阅读更多

首先需要问的是Linux中有没有像java doc 那样的API查看文档呢?

结果是肯定的,查看方法有二:

1.在命令行用man XXX 查看即可 ,按q退出。如查看open()函数,man open 即可,按空格键查看下一页;

2.也可登录Linux man-pages主页查看:http://man7.org/linux/man-pages/dir_all_alphabetic.html,在这里我们可以查看到所有的API接口;

系统调用方式的文件操作主要用到的函数有如下几个:

1.open SYNOPSIS top

       #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);

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

函数返回的是一个非负整数作为文件描述符,而该描述符的范围是0-OPEN_MAX,该描述符用于下面将要介绍的read,write等函数中作为输入参数,所以一般都要用变量把文件描述符存储起来。

pathname是要打开或创建的文件名,flags参数用于指定文件的访问方式且只能为:O_RDONLY,O_WRONLY, O_RDWR中的一个或多个(必须),当然还可以或上别的参数如O_APPEND等(可选),具体查看文档。

2.creat

#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);

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

3.close

  #include <unistd.h>

       int close(int fd);
fd是所要关闭的文件描述符.

4.lseek

SYNOPSIS top

       #include <sys/types.h>
       #include <unistd.h>

       off_t lseek(int fd, off_t offset, int whence);
若成功则返回新的文件偏移量,出错则返回-1; offset 与whence相关,其中whence可取值为:
       SEEK_SET         文本开始处
              The offset is set to offset bytes. 

       SEEK_CUR         当前值
              The offset is set to its current location plus offset bytes.

       SEEK_END         文本结尾处
              The offset is set to the size of the file plus offset bytes.

5.read

SYNOPSIS top

       #include <unistd.h>

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

若成功则返回读到的字节数,若已到文末返回0,出错返回-1; void * 表示普通指针 buf保存读取数据,count 读取字节数;


6.write

SYNOPSIS top

       #include <unistd.h>

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

分享到:
评论

相关推荐

    Linux学习笔记Linux学习资料Linux教程

    【linux学习笔记-10】Linux进程相关系统调用(三).doc 【linux学习笔记-11】守护进程daemon.doc 【linux学习笔记-12】守护进程的日志实现.doc 【linux学习笔记-13】基本进程通信--文件锁.doc 【linux学习笔记-14】...

    非常宝贵的LINUX学习笔记

    【linux学习笔记-3】文件操作(stat,chmod,umask) 【linux学习笔记-4】进程扇和进程链 【linux学习笔记-5】编写自己的ls命令 【linux学习笔记-6】文件IO操作--读写、重定向等 【linux学习笔记-7】用户标识UID与有效...

    Linux系统编程学习笔记

    Linux系统编程涵盖了众多领域,从基础的文件操作到高级的网络通信和多线程编程,为开发者提供了广泛的功能和灵活性。在这个领域工作的开发者需要深入了解Linux内核和系统底层的工作原理。 Linux 系统编程是指在 ...

    Linux学习笔记 第一版

    普通文件:包括文本文件、数据文件、可执行的二进制程序等。  目录文件:简称为目录,Linux 中把目录看成是一种特殊的文件,利用它构成文件系统的分层...当调用符号链接文件时,系统自动地访问保存在文件中的路径;

    LinuxC学习笔记

    Linux C 指针 结构体 库函数文件操作 系统调用文件操作 函数库设计 makefile编写

    linux网络编程学习笔记

    sockfd:是由socket调用返回的文件描述符. addrlen:是 sockaddr结构的长度. my_addr:是一个指向 sockaddr的指针. 在&lt;linux/socket.h&gt;;中有 sockaddr的定义 struct sockaddr{ unisgned short as_family; char ...

    unix学习笔记

    第一章UNIX操作系统概述 1983年AT&T发布UNIX System V,系统功能已经趋于稳定和完善,现在最后版本为System V Release 4 代表性UNIX版本: 1.System V Release 4 (SVRV) 小型机上、大型机上使用。 2.加州大学...

    自己动手写操作系统(含源代码).part2

    Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人...

    自己动手写操作系统(含源代码).part1

    Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍,因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的,笔者本人...

    Shell脚本学习笔记

    1.2.3 操作文件命令 10 1.2.4 目录处理命令 14 1.2.5 查看文件内容命令 15 1.3 监控程序 20 1.3.1 进程查看 20 1.3.2 实时进程监控 22 1.3.3 停止进程 24 1.4 监控磁盘空间 25 1.4.1 挂载介质 25 1.4.2 使用df命令 ...

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    NAO机器人学习笔记

    里面是我学习NAO的经验总结,主要内容有 1、Ubuntu下NAO环境配置 ...如果你是学习NAO机器人一员,这将加快你对nao机器人的了解与开发,本文章同样使用于linux下opencv的学习者,帮助其快速解决编译问题!

    linux学习笔记(3)

    脚本执行方式: 1、echo 输出命令 echo [选项] [输出内容] #选项:-e:支持反斜线控制的字符转换 \e[1;31m 开启颜色显示,结尾要加上 \e[0m 2、创建shell脚本文件hello.sh:脚本第一行写上#!bin/bash 例: #!bin/...

    java内部学习笔记.docx

    2.14 Java系统API方法调用 14 2.15二进制基础 14 2.16 Java基础其他注意事项 14 面向对象 16 3.1类 16 3.2对象 16 3.3包 16 3.4方法及其调用 17 3.5引用 17 3.6访问控制(封装) 17 3.7构造器 17 3.8 super()、super...

    国嵌笔记。全集全集

    本人学习的国嵌笔记。操作详细! 第一季 精通嵌入式 4 一. 安装tftp服务器 4 二. Samba服务器安装 4 三. NFS服务器 5 四. 安装vsftpd FTP...五、系统调用之文件描述符 22 六、库函数文件编程 22 七、时间编程 22

    word源码java-CTF:2018年2月15日至28日的CTF、C++STL等内容学习笔记

    word源码java CTF Blog 由于不再从事安全方面的学习,此repo停止更新 2月28日 更新 STL String 应用:VSCode调用WSL编译运行单...3.对参数argv[1]的操作:将Windows文件路径转换为Linux格式 C:\Project\Project1\mai

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

    百度地图开发java源码-TCP-IP-NetworkNote:《TCP/IP网络编程》(韩-尹圣雨)学习笔记

    百度地图开发java源码 1 开始网络编程 1.1 理解网络编程和套接字 linux 头文件 #include windows ...基于linux平台的实现 网络编程结束连接请求的套接...linux不区分文件和套接字 打开文件 #include #include &lt;sys/st

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城第七天笔记.doc │ ├─08.第八天 │ 14.搜索服务切换到集群.avi │ 01.课程计划.avi │ 02.课程计划.avi │ 03.搜索服务-分析.avi │ 04.搜索服务-dao层.avi │ 05.搜索服务-Service.avi │ 06.搜索...

Global site tag (gtag.js) - Google Analytics