Linux系统常用API总结

1.错误处理

  - fprintf()

  - perror()

2.通用I/O模型

  - fd = open(pathname, flags, mode)

  - numread = read(fd, buffer, count)

  - numwritten = write(fd, buffer, count)

  - status = close(fd)

  - off_t lseek(int fd, off_t offset, int whence):改变文件偏移量

  - int ioctl(int fd, int request, .../*argp*/)

  - int fcntl(int fd, int cmd, ...):文件控制操作

  - int dup(int oldfd):复制文件描述符,返回新的文件描述符,保证文件描述符最小

  - int dup2(int oldfd, int newfd):为oldfd创建副本,编号为newfd

  - ssize_t pread(int fd, void *buf, size_t count, off_t offset):在offset处读取

  - ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset):在offset处写入

  - ssize_t readv(int fd, const struct iovec *iov, int iovcnt):分散输入

  - ssize_t writev(int fd, const struct iovec *iov, int iovcnt):集中输出

  - int truncate(const char *pathname, off_t length):文件截断

  - int ftruncate(int fd, off_t length)

  - int mkstemp(char *template):template最后6个字符必须为XXXXXX,如char template[] = "/tmp/somestringXXXXXX"

  - FILE *tmpfile(void):创建临时文件

3.进程

  - pid_t getpid(void):返回调用进程的进程号

  - pid_t getppid(void):返回父进程进程号

  - pid_t fork(void)

  - void exit(int status)

  - pid_t wait(int *status):等待回收子进程资源

  - pid_t waitpid(pid_t pid, int *status, int options)

  - int execve(const char *pathname, char *const argv[], char *const envp[])

  - int system(const char *command):执行任意shell命令

4.内存分配

  - void *malloc(size_t size)

  - void free(void *ptr)

  - void *calloc(size_t numitems, size_t size):用于给一组相同对象分配内存

  - void *realloc(void *ptr, size_t size):用来调整一块内存的大小,此块内存之前由malloc函数分配

  - void *alloca(size_t size):能够在堆栈上分配内存,无需手动释放

5.时间

  - time_t time(time_t *timep)

  - char *ctime(const time_t *timep):返回字符串表示,Wed Jun 8 14:2:32 2011

  - struct tm *gmtime(const time_t *timep):对应UTC格林时间分解

  - struct tm *localtime(const time_t *timep):对应系统本地时间分解

  - char *asctime(const struct tm *timeptr):输出格式与ctime相同

  - size_t strftime(char *outstr, size_t maxsize, const char *format, const struct tm *timeptr)

  - char *currTime(const char *format):内涵strftime按format参数格式化当前时间

  - char *strptime(const char *str, const char *format, struct tm *timeptr):将包含日期和时间的字符串转换成分解时间

6.文件I/O

  - int setvbuf(FILE *stream, char *buf, int mode, size_t size):控制stdio库使用缓冲的形式

  - int fflush(FILE *stream):刷新stdio缓冲区

  - int fsync(int fd):将缓冲数据和与打开文件描述符fd相关的所有元素刷新到磁盘上

  - int fileno(FILE *stream):将文件流指针转为文件描述符

  - FILE *fdopen(int fd, const char *mode)

  - int stat(const char *pathname, struct stat *statbuf):返回所命名文件的相关信息

  - int lstat(const char *pathname, struct stat *statbuf):返回连接文件本身信息

  - int fstat(int fd, struct stat *statbuf)

  - int access(const cahr *pathname, int mode):检查文件的访问权限

  - mode_t umask(mode_t mask):设置进程的umake值

  - int chmod(const char *pathname, mode_t mode):更改由pathname参数指定的文件权限

  - int fchmod(int fd, mode_t mode)

7.目录和链接

  - int link(const char *oldpath, const char *newpath):创建硬链接

  - int unlink(const char *pathname):移除硬链接

  - int rename(const char *oldpath, const char *newpath):既可以重命名文件,又可以将文件移至同一文件系统中的另一目录

  - int symlink(const char *filepath, const char *linkpath):软连接

  - int mkdir(const char *pathname, mode_t mode):创建新目录

  - int rmdir(const char *pathname)

  - int remove(const char *pathname)

  - DIR *opendir(const char *dirpath)

  - DIR *fdopendir(int fd)

  - struct dirent *readdir(DIR *dirp)

  - void rewinddir(DIR *dirp)

  - int closedir(DIR *dirp)

  - int dirfd(DIR *dirp):返回与dirp目录流相关联的文件描述符

  - int nftw(const char *dirpath, int (*func) const char *pathname, const struct stat *statbuf, int typeflag, struct FIW *ftwbuf), int nopenfd, int flags):递归遍历目录

  - char *getcwd(char *cwdbuf, size_t size):获取当前工作目录

  - int chdir(const char *pathname):改变当前工作目录

  - int fchdir(int fd)

8.信号

  - void(*signal(int sig, void (*handler)(int)) )(int):改变信号处理

  - int kill(pid_t pid, int sig):发送信号

  - int raise(int sig):向自身发送信号

  - int pause(void):将进程挂起,直到有信号中断

  - unsigned int sleep(unsigned int seconds)

  - int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid):创建定时器

  - int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *old_value):设置定时器

  - int timer_gettimer(timer_t timerid, struct itimerspec *curr_value):获取定时器的当前值

  - int timer_delete(timer_t timerid)

9.线程

  - int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start)(void *), void *arg):创建线程

  - void pthread_exit(void *retval):终止线程

  - pthread_t pthread_self(void):获取线程ID

  - int pthread_equal(pthread_t t1, pthread_t t2):检查两个线程ID是否相同

  - int pthread_join(pthread_t thread, void **retval):等待线程终止,结束后返回

  - int pthread_detach(pthread_t thread):将thread线程标记处于分离状态,系统在线程终止时自动清理并移除

  - int pthread_mutex_lock(pthread_mutex_t *mutex):加锁和解锁互斥量

  - int pthread_mutex_unlock(pthread_mutex_t *mutex)

10.进程间通信

  //管道

  - int pipe(int filedes[2]):创建无名管道

  - int mkfifo(const char *pathname, mode_t mode):创建有名管道

  //消息队列

  - int msgget(key_t key, int msgflg):创建一个新消息队列或取得一个既有队列的标识符

  - int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg):向消息队列写入一条消息

  - ssize_t msgrcv(int msqid, void *msgp, size_t maxmsgz, long msgtyp, int msgflg):从消息队列读取并删除消息

  - int msgctl(int msqid, int cmd, struct msqid_ds *buf):在标识符Wiemsqid的消息队列上执行控制操作

  //信号量

  - int semget(key_t key, int nsems, int semflg):创建一个新信号量集

  - int semctl(int semid, int semnum, int cmd, ...):在一个信号量集上执行各种控制操作

  //共享内存

  - int shmget(key_t key, size_t size, int shmflg):创建一个新共享内存段或获取一个既有段的标识符

  - void *shmat(int shmid, const void *shmaddr, int shmflg):将shmid标识的共享内存段

  - int shmdt(const void *shmaddr):当不需要访问共享内存时,使用shmdt分离

  - int shmctl(int shmid, int cmd, struct shmid_ds *buf)

  //文件映射

  - void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset):在调用进程的虚拟地址空间中创建一个新映射

  - int munmap(void *addr, size_t length):解除映射区域

  - int msync(void *addr, size_t length, int flags):同步映射区域

11.网络

  //流式套接字

  - int socket(int domain, int type, int protocol):创建一个socket

  - int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen):将socket绑定到地址

  - int listen(int sockfd, int backlog):监听接入连接

  - int accept(int sockfd, struct sockaddr *addr, socklen_t addrlen):接受连接

  - int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen):连接到对等socket

  - int close(int fd):连接终止

  //数据包套接字

  - ssize_t recvfrom(int sockfd, void *buffer, size_t length, int flags, struct sockaddr *src_addr, socklen_t *addrne)

  - ssize_t sendto(int sockfd, const void *buffer, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)