ZBLOG

linux 系统IO函数

在Linux系统中,进行输入输出(I/O)操作时,可以使用多种不同的函数和系统调用。以下是一些常用的I/O函数及其简单描述:

1. 文件操作相关函数

  • open: 打开一个文件,返回文件描述符。

    int open(const char *pathname, int flags);
    
  • close: 关闭一个打开的文件描述符。

    int close(int fd);
    
  • read: 从文件中读取数据。

    ssize_t read(int fd, void *buf, size_t count);
    
  • write: 向文件中写入数据。

    ssize_t write(int fd, const void *buf, size_t count);
    
  • lseek: 移动文件偏移量。

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

2. 标准I/O函数

这些函数定义在<stdio.h>头文件中,是C语言提供的标准输入输出库。

  • fopen: 打开一个文件并返回FILE指针。
FILE *fopen(const char *filename, const char *mode);
  • fclose: 关闭一个打开的文件流。
int fclose(FILE *stream);
  • fread: 从指定流中读取数据。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
  • fwrite: 向指定流写入数据。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
  • fprintf: 格式化输出到指定流。
int fprintf(FILE *stream, const char *format, ...);

3. 内存映射 I/O

对于大文件或特殊用途,可以使用内存映射来进行I/O操作,这样可以提高效率。

  • mmap: 将文件或设备映射到内存空间。
void* mmap(void *addr, size_t length, int prot,
            int flags, int fd, off_t offset);
  • munmap: 解映射内存区域。
int munmap(void *addr, size_t length);

示例代码

下面是一个简单示例,演示如何使用 open, read, 和 write 函数进行基本的I/O操作:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    // 打开一个文件用于写入
    int fd = open("example.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
    if (fd == -1) {
        perror("Error opening file");
        return -1;
    }

    // 写入数据到该文件
    const char* text = "Hello World!\n";
    write(fd, text, sizeof(text));

    // 切换到读模式,重新打开同一文件
    close(fd); // 首先关闭之前打开的fd

    fd = open("example.txt", O_RDONLY);
    if (fd == -1) {
        perror("Error opening file");
        return -1;
    }

    // 从该文件读取数据并打印到控制台上
    char buffer[100];
    ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
    
    if (bytesRead >=0) {
        write(STDOUT_FILENO , buffer , bytesRead ); // 将读出的内容打印出来 
     }
     
     close(fd); // 最后要记得关闭打开的fd
    
     return 0;
}

以上就是一些常见的Linux系统I/O函数及其用法。在实际开发过程中,根据需求选择合适的方法来处理输入输出是很重要的。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=6357

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?