Linux学习常用函数笔记
进程篇:
//功能:创建子线程获取进程编号
pid_t fork(void);
pid_t getpid(void);
pid_t getppid(void);
//功能:完全替换当前线程的内容
extern char **environ;
int execl(const char *path, const char *arg, .../* (char *) NULL */);
int execlp(const char *file, const char *arg, .../* (char *) NULL */);
int execle(const char *path, const char *arg, .../*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],char *const envp[]);
//功能:等待子线程结束
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); /* This is the glibc and POSIX interface; see NOTES for information on the raw system call. */
//功能:创建守护进程
pid_t setsid(void);
//功能:创建系统日志
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
信号篇:
//功能:信号集函数
int sigemptyset(sigset_t *set);
int sigfillset(sigset_t *set);
int sigaddset(sigset_t *set, int signum);
int sigdelset(sigset_t *set, int signum);
int sigismember(const sigset_t *set, int signum);
//功能:原子化信号等待操作(替换pause())
int sigsuspend(const sigset_t *mask);(mask 为 sigprocmask备份的oldset)
//功能:信号屏蔽字
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
//功能:信号处理函数(替换signal())
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
//功能:定时时间函数(替换alarm())
int getitimer(int which, struct itimerval *curr_value);
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);
//功能:向指定进程或进程组发送指定信号
int kill(pid_t pid, int sig);
线程篇:
Compile and link with -pthread. //编译、链接时需要加-pthread
//功能:创建线程
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
//功能:等待线程执行完成并收尸
int pthread_join(pthread_t thread, void **retval);
//功能:线程退出
void pthread_exit(void *retval);
//功能:线程压栈钩子函数
void pthread_cleanup_push(void (*routine)(void *), void *arg);
//功能:线程出栈钩子函数
void pthread_cleanup_pop(int execute);
//功能:获取当前线程标识
pthread_t pthread_self(void);
//功能:判断两个线程是否为同一个线程
int pthread_equal(pthread_t t1, pthread_t t2);
//功能:取消线程
int pthread_cancel(pthread_t thread);
//功能:设置取消点
void pthread_testcancel(void);
//功能:线程分离
int pthread_detach(pthread_t thread);
//功能:创建互斥量(可设置属性)
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
//功能:创建互斥量
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
//功能:销毁互斥量
int pthread_mutex_destroy(pthread_mutex_t *mutex);
//功能:给互斥量加锁
int pthread_mutex_lock(pthread_mutex_t *mutex);
//功能:尝试给互斥量加锁
int pthread_mutex_trylock(pthread_mutex_t *mutex);
//功能:给互斥量解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);
//功能:创建信号(可设置属性)
int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);
//功能:创建信号
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
//功能:销毁信号
int pthread_cond_destroy(pthread_cond_t *cond);
//功能:广播信号(所有线程都可收到)
int pthread_cond_broadcast(pthread_cond_t *cond);
//功能:发送信号(只有一个线程可收到,但不确定是那个线程)
int pthread_cond_signal(pthread_cond_t *cond);
高级IO篇:
//功能:事件驱动的文件集
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
void FD_CLR(int fd, fd_set *set);
int FD_ISSET(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);
//功能:对文件即设置监控事件
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
//功能:创建epoll文件
int epoll_create(int size);
//功能:设置epoll监测事件
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
//功能:启动epoll监测
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
//功能:内存映射
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
//功能:取消功能映射
int munmap(void *addr, size_t length);
//功能:文件锁
int lockf(int fd, int cmd, off_t len);
int flock(int fd, int operation);
多进程通讯
//功能:创建匿名管道
int pipe(int pipefd[2]);
//功能:创建命名管道
int mkfifo(const char *pathname, mode_t mode);
//功能:系统IPC键值
key_t ftok(const char *pathname, int proj_id);
//功能:获取消息队列ID
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 msgsz, long msgtyp,int msgflg);
//功能:获取、设置消息队列
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
//功能:获取信号量ID注册信号量个数
int semget(key_t key, int nsems, int semflg);
//功能:信号量设置主要是P、V操作
int semop(int semid, struct sembuf *sops, size_t nsops);
//功能:信号量设置等
int semctl(int semid, int semnum, int cmd, ...);
//功能:获取共享内存ID
int shmget(key_t key, size_t size, int shmflg);
//功能:共享内存映射
void *shmat(int shmid, const void *shmaddr, int shmflg);
//功能:取消共享内存映射
int shmdt(const void *shmaddr);
//功能:设置共享内存等
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
socket通讯
//功能:将网络IP转为点分式
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
//功能:将点分式IP转为大整数
int inet_pton(int af, const char *src, void *dst);
//功能:将主机32位数据转为网络字节序
uint32_t htonl(uint32_t hostlong);
//功能:将主机16位数据转为网络字节序
uint16_t htons(uint16_t hostshort);
//功能:将网络32位数据转为主机字节序
uint32_t ntohl(uint32_t netlong);
//功能:将网络16位数据转为主机字节序
uint16_t ntohs(uint16_t netshort);
//功能:创建socket文件描述符
int socket(int domain, int type, int protocol);
//功能:绑定IP和端口
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
//功能:监听socket及监听最大监听数
int listen(int sockfd, int backlog);
//功能:连接服务器
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
//功能:接收客户端连接
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
//功能:接收网络流数据
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
//功能:接收网络数据报数据
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
//功能:发送网络流数据
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
//功能:发送网络数据报数据
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
//功能:获取socket属性
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
//功能:设置socket属性
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)