Linux API
文章平均质量分 70
猎羽
My name is feather!
展开
-
open Linux
本文基于Linux 4.2.0内核手册。 open function用于打开一个文件并返回文件描述符。#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, m原创 2016-02-05 00:10:41 · 4308 阅读 · 0 评论 -
link, linkat, unlink, unlinkat, and remove Functions
Linux 4.2.0link, linkat - make a new name for a file在之前的章节,我们知道一个文件可以有多个dirctory entries指向它的i-node。我们可以使用link , linkat来创建已经存在文件的链接(link) 原型如下:#include <unistd.h>int link(const char *oldpath, const cha原创 2016-02-14 14:11:25 · 1695 阅读 · 0 评论 -
rename and renameat Functions
rename, renameat, renameat2 - change the name or location of a file#include <stdio.h>int rename(const char *oldpath, const char *newpath);#include <fcntl.h> /* Definition of AT_* constants */原创 2016-02-14 14:37:04 · 1053 阅读 · 0 评论 -
symlink,symlinkat,readlink and readlinkat
symlink, symlinkat - make a symbolic link for a file原型如下#include <unistd.h>int symlink(const char *target, const char *linkpath);#include <fcntl.h> /* Definition of AT_* constants */#include原创 2016-02-14 15:56:18 · 846 阅读 · 0 评论 -
futimens, utimensat, and utimes Functions
一系列用于改变文件访问时间( access )和修改时间( modification )的系统调用futimens, utimensat - change file timestamps with nanosecond precisionfutimens, utimensat 提供纳秒尺寸,通过使用timespec结构体。#include <fcntl.h> /* Definition of AT_原创 2016-02-16 09:12:48 · 1644 阅读 · 0 评论 -
mkdir, mkdirat, and rmdir Functions
mkdir, mkdirat - create a directory#include <sys/stat.h>#include <sys/types.h>int mkdir(const char *pathname, mode_t mode);#include <fcntl.h> /* Definition of AT_* constants */#include <sys原创 2016-02-16 10:36:58 · 425 阅读 · 0 评论 -
alarm and pause Functions
alarm- 设置定时器pause-等待信号被捕获原创 2016-03-05 17:44:35 · 382 阅读 · 0 评论 -
kill and raise Functions
kill - send signal to a process(发送信号给进程)raise - send a signal to the caller(发送信号给调用者)原创 2016-03-05 16:37:43 · 359 阅读 · 0 评论 -
线程相关API集合(Linux)
包含如下API: 1. pthread_equal 2. pthread_self 3. pthread_create 4. pthread_exit 5. pthread_join 6. pthread_cancel 7. pthread_cleanup_push 8. pthread_cleanup_pop 9. pthread_detach 10. pthread_mute等等原创 2016-03-11 13:08:25 · 1053 阅读 · 0 评论 -
chdir,fchdir,and getcwd Functions
Every process has a current working directory. This directory is where the search for all relative pathnames starts (i.e., with all pathnames that do not begin with a slash(斜线号/)). When a user logs in原创 2016-02-16 18:27:49 · 582 阅读 · 0 评论 -
fwide Function
fwide - set and determine the orientation of a FILE stream#include <wchar.h>int fwide(FILE *stream, int mode);//Returns: positive if stream is wide oriented,// negative if stream is byte orie原创 2016-02-18 10:16:25 · 689 阅读 · 0 评论 -
truncate and ftruncate Functions
truncate, ftruncate - truncate a file to a specified lengthSometimes we would like to truncate a file by chopping off(砍去) data at the end of the file. Emptying a file, which we can do with the O_TRUNC原创 2016-02-13 14:34:31 · 431 阅读 · 0 评论 -
chown, fchown, fchownat, and lchown Functions
chown, fchown, lchown, fchownat - change ownership of a file 用于改变user ID and group ID,如果某一个为-1,相应的ID保持不变。 原型如下#include <unistd.h>int chown(const char *pathname, uid_t owner, gid_t group);int fchown(原创 2016-02-13 11:54:50 · 631 阅读 · 0 评论 -
lseek Function
每个打开的文件都与“current file offset”相关联,这通常是一个非负整数用以测量从文件开始的字节数。Read和Write操作开始在”current file offset”处造成该位移值会增加read或write的字节数。默认的打开的文件位移值初始为0,除非指定为O_APPEND打开文件的位移可以显式的通过调用lseek来设置。#include <sys/types.h>#incl原创 2016-02-05 09:12:05 · 361 阅读 · 0 评论 -
read Linux
从打开的文件读取数据需要readfunction。 Linux 4.2.0 man中如下#include <unistd.h>ssize_t read(int fd, void *buf, size_t count); Return: number of bytes 0 : end of file -1 : error第二个参数是用来保存读取的数据的缓冲区。 第三个参数原创 2016-02-05 11:00:05 · 435 阅读 · 0 评论 -
fcntl Linux
fcntl用于改变已经打开的文件属性 原型如下:#include <unistd.h>include <fcntl.h>int fcntl(int fd, int cmd, ... /* arg */ );//Returns: depends on cmd if OK(看接下来的内容),-1 on error在本章节的例子中,第三个参数总是整数。在14.3的文件锁,第三个参数就成为了结构指针。原创 2016-02-09 16:47:17 · 638 阅读 · 0 评论 -
dup and dup2 函数 Linux
如果你想复制文件描述符,可以使用dup和dup2来实现该功能。 函数原型如下:#include <unistd.h>int dup(int oldfd);int dup2(int oldfd, int newfd);//Return: new file descriptor if OK, -1 on error通过dup返回的文件描述符是the lowest-numbered avaliab原创 2016-02-09 20:47:30 · 513 阅读 · 0 评论 -
ioctl Function
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。 ioctl经常是IO操作的杂货包(catchall),任何使用本章其他函数(如read,write…)表示的操作就需要ioctl终端(Terminal)IO就是本章最大的使用者(在chapter 18我们会看到POSIX.1已经用分离的函数替换原创 2016-02-09 22:39:10 · 565 阅读 · 0 评论 -
sync,fsync,fdatasync in Linux
这三个函数用于实现磁盘数据的同步问题。Unix操作系统在大部分磁盘(disl)IO操作的时候在内核使用了buffer cache or page cache。当我们向文件写入数据的时候,数据经常被内核复制到缓冲区中,排队地等待被写入disk(磁盘)。这被称为delayed write(延迟写入)。通常当内核需要将buffer用于其他磁盘块的时候,会将所有延迟写入的数据全部写入到disk(磁盘)中去。原创 2016-02-09 20:51:27 · 645 阅读 · 0 评论 -
umask Function
umask - set file mode creation mask(文件模式创建掩码) 系统调用umask给进程设置file mode creation mask并且返回之前的值(这是少数不返回错误值的函数之一) Linux man手册中umask原型如下:#include <sys/types.h>#include <sys/stat.h>mode_t umask(mode_t mask原创 2016-02-13 08:52:11 · 467 阅读 · 0 评论 -
access and faccessat Functions
之前我们说过,打开文件时,内核会根据effective user Id and group ID进行访问权限测试。有时候,进程想使用real user and group ID进行测试。当进程使用set user IDbit和set-group IDbit的时候这是很有用的。即使进程的可能被set-user-ID作为root权限,该进程还是想确定(verify)真实的用户能否访问指定的文件。 ac原创 2016-02-12 12:19:12 · 641 阅读 · 0 评论 -
chmod,fchmod,and fchmodat Functions
chmod, fchmod, fchmodat - change permissions of a file原型如下:#include <sys/stat.h>int chmod(const char *pathname, mode_t mode);int fchmod(int fd, mode_t mode);#include <fcntl.h> /* Definition原创 2016-02-13 11:37:23 · 862 阅读 · 0 评论 -
stat,fstat,and lstat Functions
函数原型如下:原创 2016-02-13 11:38:11 · 457 阅读 · 0 评论 -
setbuf、setvbuf
setbuf, setbuffer, setlinebuf, setvbuf - stream buffering operations用于更改buffering 这些调用必须在fopen流之后,操作这些stream流之前调用。#include <stdio.h>void setbuf(FILE *stream, char *buf);int setvbuf(FILE *stream, char原创 2016-02-18 11:09:38 · 574 阅读 · 0 评论 -
fflush
fflush - flush a stream强制刷新流(stream)#include <stdio.h>int fflush(FILE *stream);//Returns: 0 if OK, EOF on errorfflush可以让stream任何未写入的数据传递到kernel中 特殊的情况:如果fp为NULL,fflush会造成所有的输出stream被刷新原创 2016-02-18 11:15:14 · 614 阅读 · 0 评论 -
Linux中读取目录: opendir,fdopendir,readdir,rewinddir,closedir,telldir,seekdir
Directories can be read by anyone who has access permission to read the directory. But only the kernel can write to a directory, to preserve file system sanity(心智健康)(只有内核可以写如目录来保证文件系统的正常运作).目录的写权限和执行权限原创 2016-02-16 13:05:50 · 2640 阅读 · 0 评论 -
getenv/putenv/setenv/unsetenv
Linux环境变量操作函数getenv - get an environment variable#include <stdlib.h>char *getenv(const char *name);//Returns:与name相关的value的指针, NULL if not found我们应该总是使用getenv来获取环境的特殊值,而不是直接访问environ下章我们会知道我们可以仅仅影响当原创 2016-02-25 19:52:28 · 719 阅读 · 0 评论 -
setjmp and longjmp
setjmp, sigsetjmp - save stack context for nonlocal goto1.作用C中我们不能goto一个其他函数离得label,我们必须使用setjmp和longimp来完成这种类型的branching2.stack frame每个function中的自动变量都保存在stack frame中系统内部并有没有支持stack的硬件,C的实现可能会使用链表来实现st原创 2016-02-25 20:21:59 · 520 阅读 · 0 评论 -
getrlimit、setrlimit
每个进程都有一组资源的限制,通过getrlimit、setrlimit能查寻和改变资源限制。本文讲述这两个函数的使用原创 2016-02-26 15:11:17 · 482 阅读 · 0 评论 -
getpid
获取进程标识符#include <unistd.h>pid_t getpid(void); //Returns: process ID of calling processpid_t getppid(void); //Returns: parent process ID of calling processuid_t getuid(void); /原创 2016-02-28 10:48:22 · 390 阅读 · 0 评论 -
fork Function
fork - create a child process#include <unistd.h>pid_t fork(void); //Returns:0 in child, process ID of child in parent, -1 on error该函数返回了两次 子进程中通过getppid可以获得父进程的process ID。 父进程中通过fork返回值获原创 2016-02-28 11:59:05 · 368 阅读 · 0 评论 -
vfork Function
调用方法和返回值与fork一样vfork - create a child process and block parent#include <sys/types.h>#include <unistd.h>pid_t vfork(void);vfork和fork的semantics不同和fork一样创建新的进程, 但child不引用的地址空间,不会复制到child中去 ;child简单的在vf原创 2016-02-28 13:04:14 · 446 阅读 · 0 评论 -
wait and waitpid
wait, waitpid, waitid - wait for process to change state#include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status);pid_t waitpid(pid_t pid, int *status, int options);//Both return: process I原创 2016-02-29 09:48:13 · 759 阅读 · 0 评论 -
wait3和wait4 Functions
提供了与wait,waitpid,waitid函数唯一不能提供的特性:增加了额外的参数,用于存放中止进程的所有资源的汇总和其所有的子进程wait3, wait4 - wait for process to change state, BSD style#include <sys/types.h>#include <sys/time.h>#include <sys/resource.h>#inc原创 2016-02-29 20:44:10 · 808 阅读 · 0 评论 -
exec Function
注意点:调用exec的进程会完全被新的程序替代,从新程序的main开始执行process ID保持保持原来的值,因为没有创建新的进程exec替换了当前进程的text,data,heap,stacksegmentsfork和exec的区别fork创建新的进程 exec初始化新的程序process control primitives有哪些fork,exec,exit,waitexecl, e原创 2016-03-01 09:54:59 · 678 阅读 · 0 评论 -
setuid、setgid等 Functions
setuid、setgid - set user identity作用能改变 real ID, effective ID, saved set-user-ID#include <sys/types.h>#include <unistd.h>int setuid(uid_t uid);int setgid(gid_t gid); //Return: 0 if OK, -1 on error原创 2016-03-02 16:52:08 · 771 阅读 · 0 评论 -
fmemopen、open_memstream/wmemstream
fmemopen允许调用者提供缓冲区用作文件流原创 2016-02-24 13:52:16 · 1234 阅读 · 0 评论 -
malloc、free、calloc、realloc、alloca
malloc, free, calloc, realloc - allocate and free dynamic memory#include <stdlib.h>void *malloc(size_t size);void *calloc(size_t nmemb, size_t size);void *realloc(void *ptr, size_t size);//Returns:no原创 2016-02-23 20:14:28 · 451 阅读 · 0 评论 -
fopen、freopen、fdopen and fclose
fopen, fdopen, freopen - stream open functions#include <stdio.h>FILE *fopen(const char *path, const char *mode);FILE *fdopen(int fd, const char *mode);FILE *freopen(const char *path, const char *mode原创 2016-02-19 11:01:38 · 1000 阅读 · 0 评论 -
getc、fgetc、getchar、ungetc
介绍标准IO库里读取流stream的操作.fgetc, fgets, getc, getchar, ungetc - input of characters and strings原创 2016-02-19 11:21:25 · 1012 阅读 · 0 评论