在Linux系统中,C++可以通过系统调用(syscalls)与内核进行交互。这些系统调用提供了许多底层功能,如文件操作、进程管理、网络通信等。以下是一些常见的Linux系统调用类型及其相关函数:
打开文件
int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);读取文件
ssize_t read(int fd, void *buf, size_t count);写入文件
ssize_t write(int fd, const void *buf, size_t count);关闭文件
int close(int fd);文件定位
int lseek(int fd, off_t offset, int whence);文件状态
int fstat(int fd, struct stat *buf);int stat(const char *pathname, struct stat *buf);创建进程
pid_t fork(void);pid_t vfork(void);执行新程序
int execl(const char *path, const char *arg0, ... /*, (char *) NULL */);int execp(const char *file, char *const argv[]);int execv(const char *path, char *const argv[]);等待进程
pid_t wait(int *status);pid_t waitpid(pid_t pid, int *status, int options);退出进程
void exit(int status);void _exit(int status);创建套接字
int socket(int domain, int type, int protocol);绑定地址
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);监听连接
int listen(int sockfd, int backlog);接受连接
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);发送数据
ssize_t send(int sockfd, const void *buf, size_t len, int flags);接收数据
ssize_t recv(int sockfd, void *buf, size_t len, int flags);关闭套接字
int close(int sockfd);void *malloc(size_t size);void *calloc(size_t num, size_t size);void *realloc(void *ptr, size_t size);void free(void *ptr);获取当前时间
time_t time(time_t *tloc);获取进程ID
pid_t getpid(void);pid_t getppid(void);获取用户ID
uid_t getuid(void);gid_t getgid(void);获取文件描述符限制
int getrlimit(int resource, struct rlimit *rlim);设置文件描述符限制
int setrlimit(int resource, const struct rlimit *rlim);errno获取具体的错误码。<unistd.h>、<sys/types.h>、<sys/stat.h>、<fcntl.h>、<sys/socket.h>等。通过这些系统调用,C++程序可以在Linux系统上实现各种复杂的任务。