免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 689 | 回复: 0
打印 上一主题 下一主题

Linux编程--文件结构 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-22 20:48 |只看该作者 |倒序浏览

Linux File Structure
The system uses the number of the file’s inode; the directory structure just names the file for our benefit.
A directory is a file that holds the inode numbers and names of other files. Each directory entry is a link to a file’s inode; remove the filename and you remove the link.
Files and Devices
Three important device files found in both UNIX and Linux are /dev/console, /dev/tty, and /dev/null.
/dev/console,
This device represents the system console. Error messages and diagnostics are often sent to this device.Each UNIX system has a designated terminal or screen to receive console messages. At one time, it mighthave been a dedicated printing terminal. On modern workstations, and on Linux, it’s usually the `active’virtual console, while under X, it will be a special console window on the screen.
/dev/tty
The special file /dev/tty is an alias (logical device) for the controlling terminal (keyboard and screen,or window) of a process, if it has one.
Note that while there’s only one /dev/console device, there are effectively many different physical
devices accessed through /dev/tty.
需要注意的是TTY是和 进程相关联的。
/dev/null
This is the null device. All output written to this device is discarded. Unwanted output is often redirected to /dev/null.
System Calls and Device Drivers
The low-level functions used to access the device drivers, the system calls, include:
❑ open: Open a file or device
❑ read: Read from an open file or device
❑ write: Write to a file or device
❑ close: Close the file or device
❑ ioctl: Pass control information to a device driver//需要注意的是ioctl这个函数能够处理特殊设备的不同特性。
Library Functions
系统调用的低效性有下面亮点:
(1)       一个应用程序如果调用了很多次系统调用,则进程老要在用户空间和内核空间进行切换,这样将浪费时间。我们的策略是让一次系统调用尽量多处理数据。
(2)          系统调用对数据块的大小有限制,比方说一个磁带驱动程序如果规定每次写的数据块的大小为10k,如果你写了1k数据,磁带在物理上也要移动1k的距离,这就导致了空间的浪费。
库函数的出现,解决了这些效率低效的问题,库函数对需要I/O的数据进行缓冲和处理,当数据的大小与特定物理设备的系统调用和谐的时候,才进行一次系统调用。

Low-Level File Access
1、三个特殊的文件描叙符
❑ 0: Standard input
❑ 1: Standard output
❑ 2: Standard error
2、四个主要的函数,以及包含他们的头文件
#include
#include
#include
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode);
注意open函数建立了文件描叙符与各钟类型文件的联系(包括设备文件),其中oflags项定义入下:
❑ O_APPEND: Place written data at the end of the file.
❑ O_TRUNC: Set the length of the file to zero, discarding existing contents.
❑ O_CREAT: Creates the file, if necessary, with permissions given in mode.
❑ O_EXCL: Used with O_CREAT, ensures that the caller creates the file. The open is atomic; that is,
it’s performed with just one function call. This protects against two programs creating the file at
the same time. If the file already exists, open will fail.
<SPAN style="COLOR: #0070c0; FONT-FAMILY: 宋体; mso-bidi-font-family: Palatino-Roman; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt; mso-ascii-theme-font: major-fareast; mso-fareast-theme-font%3

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69999/showart_1871909.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP