第七章 UNIX系统调用
低级I/O
-------
所有的I/O都是由两个系统调用完成:read/write
fd 为文件描述符
buf 为字符数组
n 为要传输的字节数
int fd, n, nread, nwritten;
char buf[SIZE]
nread = read(fd, buf, n);
nwritten = write(fd, buf, n);
创建文件
--------
两个系统调用:open/creat
fd 为文件描述符
name 为一个包含文件名的字符串
rwmode 0代表读, 1代表写, 2代表既可读也可写
perms 文件权限,-rwxrw-r--对应的perms值0764
char *name;
int fd, rwmode, perms;
fd = open(name, rwmode);
fd = creat(name, perms);
随机访问
--------
系统调用:lseek (l表示long, 单词seek的意思是寻找)
origin 0表示文件的开始, 1表示当前位置, 2代表末尾
返回值是当前新的绝对位置,如果出错,返回-1
ind fd, origin;
long offset, pos, lseeek();
pos = lseek(fd, offset, origin);
==========================================
文件系统
--------
目录
----
struct direct //参见 /usr/include/sys/dir.h
I节点
-----
struct stat //参见 /usr/include/sys/stat.h
==========================================
进程
----
创建低级进程
------------
execlp
execvp
系统调用:dup/close/fork/wait
dup(fd) 在最低序号的未分配的文件描述符上复制文件描述符fd,
返回志向相同打开文件的一个新的文件描述符
close(fd) 关闭文件描述符fd
fork
wait
==========================================
信号与中断
----------
系统调用:
signal()
alarm()
函数:
setjmp()