#include
time_t time(time_t *t) ;
time_t其实就是int32_t类型,只不过被typedef重命名了。(time_t)-1 , errno被设置。获取总秒数的方式有两种。
通过返回值获取
time_t tim = time(NULL);
不使用参数时,参数指定为NULL.
参数
time_t tim;
time(&tim);
#include
int clock_gettime(clockid_t clk_id, struct timespec *tp);
参数
struct timespec {
time_t tv_sec;/* seconds */
long tv_nsec;/* nanoseconds */
};
| 调用 | 说明 |
|---|---|
| pid=fork() | 创建与父进程相同的子进程 |
| pid=waitpid(pid,&statloc,options) | 等待一个子进程终止 |
| s=execve(name,.argv,.environp) | 替换一个进程的核心映像 |
| exit(status) | 终止进程执行并返回状态 |
| 调用 | 说明 |
|---|---|
| fd=open(file,flags,…) | 打开一个文件使用读、写。 |
| s=close(fd) | 关闭一个打开的文件 |
| n=read(fd,buffer,nbytes) | 把数据从一个文件读到缓冲区中 |
| n=write(fd,buffer,nbytes) | 把数据从缓冲区写到一个文件中 |
| position =lseek(fd,offset,whence) | 移动文件指针 |
| s=stat(name,&buf) | 取得文件状态信息 |
#include
int open(const char *pathname,int flags[,mode_t mode]);//open and possibly create a file
如果没有mode参数,只能打开存在的文件,否则会报错;如果有mode参数,就会按照mode指定的文件权限创建文件。
返回:打开成功返回文件操作符,否则返回-1并设置errno
参数:
flags
以下三个选项必选其中之一,且是互斥的
O_RDONLY :Open for reading only.
O_WRONLY:Open for writing only.
O_RDWR:Open for reading and writing. The result is undefined if this flag is applied to a FIFO.
以下是可选组合选项,通过|逻辑或组合
O_CREAT:若欲打开的文件不存在则自动建立该文件.
O_EXCL:如果O_EXCL与O_CREAT 被同时设置, 此指令会去检查文件是否存在,文件若不存在则建立该文件, 否则将导致打开文件错误. 此外, 若O_CREAT 与O_EXCL 同时设置, 并且欲打开的文件为符号连接, 则会打开文件失败.
O_NOCTTY:如果欲打开的文件为终端机设备时, 则不会将该终端设备当成进程控制终端机.
O_TRUNC:若文件存在并且以可写的方式打开时, 此旗标会令文件长度清为0, 而原来存于该文件的资料也会消失.
O_APPEND 当读写文件时会从文件尾开始移动, 也就是所写入的数据会以附加的方式加入到文件后面.
O_NONBLOCK:以非阻塞的方式打开文件, 也就是无论有无数据读取或等待, 都会立即返回进程之中.
如果没有设置O_NONBLOCK:
如果设置了O_NONBLOCK:
O_NDELAY 同O_NONBLOCK.
O_SYNC 以同步的方式打开文件.
O_NOFOLLOW:如果参数pathname 所指的文件为一符号连接, 则会令打开文件失败.
O_DIRECTORY:如果参数pathname 所指的文件并非为一目录, 则会令打开文件失败。
可选参数mode,只有在创建新文件时才会生效
#include
ssize_t write(int fd,const void *buf,size_t count);//write to a file descriptor
ssize_t read(int fd,const void *buf,size_t count);//read from a file descriptor
//fd:文件描述符
//buf:写缓存区地址或读缓存区地址
//count:缓存区的长度
#include
#include
off_t lseek(int fd, off_t offset, int whence);
设置文件指针偏置
参数:
offset 字节offset字节offset字节| 调用 | 说明 |
|---|---|
| s=mkdir(name,mode) | 创建一个新目录 |
| s=rmdir(name) | 删去一个空目录 |
| s=link(name1,name2) | 创建一个新目录项name2,并指向 name1 |
| s=unlink(name) | 删去一个目录项 |
| s=mount(special,name,flag) | 安装一个文件系统 |
| s=umount(special) | 卸载一个文件系统 |
函数调用出错时,Linux系统使用错误编号(整形数)来标记具体出错的原因,每个函数有很多错误号,每个错误号代表了一种错误,产生这个错误时,会自动的将错误号赋值给errno这个全局变量。
errno是Linux系统定义的全局变量,可以直接使用。
错误号和errno全局变量都被定义在了errno.h头文件,使用errno时需要包含这个头文件。
库函数 perror
调用perror函数时,它会自动去一张对照表,将errno中保存的错误号,换成具体的文字信息并拉印出来,我们就能知道函数的具体错误原因了。
| 调用 | 说明 |
|---|---|
| s=chdir(dirname) | 改变工作目录 |
| s=chmod(name,mode) | 修改一个文件的保护位 |
| s=kill(pid,signal) | 发送信号给进程 |
| seconds=time(&seconds) | 获取从1970年1月1日至今的时间 |
上面的系统调用参数中有一些公共部分,例如pid 系统进程id,fd是文件描述符,n是字节数,position是在文件中的偏移量、seconds是流逝时间。