#找不到文件

文件和目录之新文件和目录的所有权

首先需要明确的是,新目录的所有权规则与新文件所有权规则相同。新文件的用户ID设置为进程的有效用户ID。关于组ID,POSIX.1允许实现选择下列之一作为新文件的组ID。(1)新文件的组ID可以是进程的有效组ID。(2)新文件的组ID可以是它所在目录的组ID。使用POSIX.1所允许的第二个选项(继承目录的组ID)使得在...

文件和目录之文件访问权限

st_mode值也包含了针对文件的访问权限位。所有文件类型(目录文件、字符特殊文件等)都有访问权限(accesspermission)。每个文件有9个访问权限位,可将它们分成三类,见表4-5:表4-59个访问权限位,取自<sys/stat.h>st_mode屏蔽意义S_IRUSR用户-读S_IWUSR用户-...
代码星球 代码星球·2021-02-21

文件和目录之设置用户ID和设置组ID

与一个进程相关联的ID有6个或更多,它们如表4-4所示:表4-4与每个进程相关联的用户ID和组ID实际用户ID                 &nb...

文件和目录之文件类型

本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型。文件类型包括如下几种:(1)普通文件(regularfile)。这是最常见的文件类型,这种文件包含了某种形式的数...
代码星球 代码星球·2021-02-21

文件和目录之stat、fstat和lstat函数

#include<sys/stat.h>intstat(constchar*restrictpathname,structstat*restrictbuf);intfstat(intfiledes,structstat*buf);intlstat(constchar*restrictpathname,str...

实用编程技术之多个头文件中变量的重复定义

一些基本系统数据类型可以在多个头文件中定义。例如,在FreeBSD5.2.1中,size_t在26个不同的头文件中都有定义。由于一个程序可能包含这26个不同的头文件,并且ISOC不允许对同一个名字进行多次类型定义,那么我们该如何编写这些头文件呢?下面是FreeBSD中使用的技术:首先,在头文件<machine/_...

文件I/O之/dev/fd

 较新的系统都提供名为/dev/fd的目录,其目录项是名为0、1、2等的文件。打开文件/dev/fd/n等效于复制描述符n(假定描述符n是打开的)。在下列函数调用中:fd=open("/dev/fd/0",mode);大多数系统忽略它所指定的mode,而另外一些则要求mode必须是所涉及的文件(在这里则是标准...
代码星球 代码星球·2021-02-21

文件I/O之ioctl函数

ioctl函数是I/O操作的杂物箱。不能用其他函数表示的I/O操作通常都能用ioctl表示。终端I/O是ioctl的最大使用方面。ioctl函数通过对文件描述符发送特定的命令来控制文件描述符所代表的设备。#include<unistd.h>/*SystemV*/#include<sys/ioctl.h...
代码星球 代码星球·2021-02-21

文件I/O之fcntl函数

fcntl函数可以改变已打开的文件的性质。#include<fcntl.h>intfcntl(intfiledes,intcmd,.../*intarg*/);返回值:若成功则依赖于cmd,若出错则返回-1在本节的各实例中,第三个参数总是一个整数,与上面所示函数原型中的注释部分相对应。但是在说明记录锁时,第...
代码星球 代码星球·2021-02-21

文件I/O之sync、fsync和fdatasync函数

传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后等待其到达队首时,才进行实际...

文件I/O(不带缓冲)之dup和dup2函数

下面两个函数都可用来复制一个现有的文件描述符:#include<unistd.h>intdup(intfiledes);intdup2(intfiledes,intfiledes2);两函数的返回值:若成功则返回新的文件描述符,若出错则返回-1由dup返回的新文件描述符一定是当前可用文件描述符中的最小数值。...

文件I/O(不带缓冲)之原子操作

一、添写至一个文件考虑一个进程,它要将数据添加到一个文件尾端。早期的UNIX系统并不支持open的O_APPEND选项,所以程序被编写成下列形式:if(lseek(fd,0L,2)<0)/*positiontoEOF*/err_sys("lseekerror");if(write(fd,buf,100)!=100...

文件I/O(不带缓冲)之文件共享

UNIX系统支持在不同进程间共享打开的文件。内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。(1)每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是:  &...
代码星球 代码星球·2021-02-21

文件I/O(不带缓冲)之I/O的效率

程序清单3-3中的程序使用read和write函数复制文件。关于该程序应注意下列各点:它从标准输入读,写至标准输出,这就假定在执行本程序之前,这些标准输入、输出已由shell安排好。确实,所有常用的UNIX系统shell都提供一种方法,它在标准输入上打开一个文件用于读,在标准输出上创建(或重写)一个文件。这使得程序不必...
代码星球 代码星球·2021-02-21

文件I/O(不带缓冲)之write函数

调用write函数向打开的文件写数据。#include<unistd.h>ssize_twrite(intfiledes,constvoid*buf,size_tnbytes);返回值:若成功则返回已写的字节数,若出错则返回-1。其返回值通常与参数nbytes的值相同,否则表示出错。write出错的一个常见...
首页上一页...2324252627...下一页尾页