JavaScript is required to for searching.
跳过导航链接
退出打印视图
编程接口指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  内存和 CPU 管理

2.  用于 Solaris Cluster 的远程共享内存 API

3.  会话描述协议 API

4.  进程调度程序

5.  地址组 API

6.  输入/输出接口

文件和 I/O 接口

基本文件 I/O

高级文件 I/O

文件系统控制

使用文件和记录锁定

选择锁定类型

选择建议性锁定或强制性锁定

关于强制性锁定的注意事项

支持的文件系统

打开文件进行锁定

设置文件锁定

设置和删除记录锁定

获取锁定信息

进程派生和锁定

死锁处理

终端 I/O 函数

7.  进程间通信

8.  套接字接口

9.  使用 XTI 和 TLI 编程

10.  包过滤钩子

11.  传输选择和名称到地址映射

12.  实时编程和管理

13.  Solaris ABI 和 ABI 工具

A.  UNIX 域套接字

索引

文件和 I/O 接口

组织为一系列数据的文件称为常规文件。常规文件可以包含 ASCII 文本、以某些其他二进制数据编码的文本、可执行代码,或者文本、数据以及代码的任意组合。

常规文件由以下部分构成:

Solaris 操作系统提供了以下基本的文件输入/输出接口形式:

基本文件 I/O

以下接口针对文件和字符 I/O 设备执行基本操作。

表 6-1 基本文件 I/O 接口

接口名称
目的
打开文件进行读取或写入
关闭文件描述符
从文件中读取
向文件中写入
创建新文件或重写现有文件
删除目录项
移动读/写文件指针

以下代码样例说明了基本文件 I/O 接口的用法。read(2)write(2) 都从文件当前偏移位置开始传送不超过指定数量的字节。返回实际传送的字节数。read(2) 返回值零时指示已到达文件结尾。

示例 6-1 基本文件 I/O 接口

#include            <fcntl.h>
#define            MAXSIZE            256

main()
{
    int     fd;
    ssize_t n;
    char        array[MAXSIZE];

    fd = open ("/etc/motd", O_RDONLY);
    if (fd == -1) {
        perror ("open");
        exit (1);
    }
    while ((n = read (fd, array, MAXSIZE)) > 0)
        if (write (1, array, n) != n)
            perror ("write");
    if (n == -1)
        perror ("read");
    close (fd);
}

完成文件读取或写入后,应始终调用 close(2)。对于不是从 open(2) 调用返回的文件描述符,请不要调用 close(2)

可使用 read(2)write(2) 或通过调用 lseek(2) 来更改已打开文件的文件指针偏移。以下示例说明了 lseek 的用法。

off_t     start, n;
struct    record    rec;

/* record current offset in start */
start = lseek (fd, 0L, SEEK_CUR);

/* go back to start */
n = lseek (fd, -start, SEEK_SET);
read (fd, &rec, sizeof (rec));

/* rewrite previous record */
n = lseek (fd, -sizeof (rec), SEEK_CUR);
write (fd, (char *&rec, sizeof (rec));

高级文件 I/O

下表列出了高级文件 I/O 接口所执行的任务。

表 6-2 高级文件 I/O 接口

接口名称
目的
链接到文件
确定文件的可访问性
生成特殊文件或普通文件
更改文件的模式
更改文件的属主和组
设置文件的访问时间和修改时间
获取文件状态
执行文件控制功能
控制设备
获取可配置的路径名变量
执行目录操作
生成目录
读取符号链接的值
更改文件的名称
删除目录
生成指向某一文件的符号链接

文件系统控制

下表中列出的文件系统控制接口可用于控制文件系统的各个方面。

表 6-3 文件系统控制接口

接口名称
目的
获取文件系统统计信息
更新超级块
挂载文件系统
获取文件系统信息
获取文件系统类型信息