- 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)
Linux系统常用API总结