当前位置: 首页 > news >正文

【Linux】常见的系统调用 函数和功能简单总结

什么是系统调用?

当我们从用户态进行系统调用时,实际上是通过一个软中断(例如int 0x80)或专门的系统调用指令(如sysenter、syscall)陷入内核态,然后执行内核中预先设定的系统调用处理程序。

系统调用按照功能分类

错误处理

头文件:string.h

系统调用:char* strerror(int errnum)

功能:将整数形式的错误号转换为有意义的字符串

头文件:stdio.h

系统调用:void perror(char const* tag)

功能:在标准出错设备上打印最近一次函数调用的错误信息

内存管理

头文件:sys/mman.h

系统调用:void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset)

功能:建立虚拟内存到物理内存或磁盘文件的映射

头文件:sys/mman.h

系统调用:int munmap(void* start, size_t length)

功能:解除虚拟内存到物理内存或磁盘文件的映射

头文件:unistd.h

系统调用:void* sbrk(intptr_t increment)

功能:以相对方式分配和释放虚拟内存

头文件:unistd.h

系统调用:int brk(void* end_data_segment)

功能:以绝对方式分配和释放虚拟内存

文件管理和文件系统

头文件:fcntl.h

系统调用:int open(char const* pathname, int flags, mode_t mode)

功能:打开已有的文件或创建新文件

头文件:unistd.h

系统调用:int close(int fd)

功能:关闭处于打开状态的文件描述符

头文件:unistd.h

系统调用:ssize_t write(int fd, void const* buf, size_t count)

功能:向指定的文件写入数据

头文件:unistd.h

系统调用:ssize_t read(int fd, void* buf, size_t count)

功能:从指定的文件中读取数据

头文件:unistd.h

系统调用:off_t lseek(int fd, off_t offset, int whence)

功能:人为调整文件读写位置

头文件:unistd.h

系统调用:int dup(int oldfd)

功能:复制文件描述符表的特定条目到最小可用项

头文件:unistd.h

系统调用:int dup2(int oldfd, int newfd)

功能:复制文件描述符表的特定条目到指定项

头文件:unistd.h

系统调用:int access(char const* pathname, int mode)

功能:判断当前进程是否可以对某个给定的文件执行某种访问

头文件:unistd.h

系统调用:int truncate(char const* path, off_t length)

                  int ftruncate(int fd, off_t length)

功能:修改指定文件的大小

头文件:fcntl.h

系统调用:int fcntl(int fd, F_SETLK/F_SETLKW, struct flock* lock)

功能:加解锁

头文件:sys/stat.h

系统调用:int stat(char const* path, struct stat* buf)

                  int fstat(int fd, struct stat* buf)

                  int lstat(char const* path, struct stat* buf) 

功能:从i节点中提取文件的元数据,即文件的属性信息

头文件:sys/mman.h

系统调用:void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t offset)

功能:建立虚拟内存到物理内存或磁盘文件的映射

头文件:sys/mman.h

系统调用:int munmap(void* start, size_t length)

功能:解除虚拟内存到物理内存或磁盘文件的映射

进程管理

头文件:unistd.h

系统调用:pid_t fork(void)

功能:创建调用进程的子进程

头文件:stdlib.h

系统调用:void exit(int status)

功能:令进程终止

头文件:stdlib.h

系统调用:int atexit(void (*function)(void))

功能:function函数指针,指向退出处理函数

头文件:stdlib.h

系统调用:int on_exit(void (*function)(int, void*), void* arg)

功能:注册退出处理函数

头文件:unistd.h

系统调用:void _exit(int status)

功能:调用_exit函数令进程终止

头文件:stdlib.h

系统调用:void _Exit(int status)

功能:调用_Exit函数令进程终止

头文件:stdlib.h

系统调用:void abort(void)

功能:向调用进程发送SIGABRT(6)信号,该信号默认情况下可使进程结束

头文件:sys/wait.h

系统调用:pid_t wait(int* status)

功能:等待并回收任意子进程

头文件:sys/wait.h

系统调用:pid_t waitpid(pid_t pid, int* status, int options)

功能:等待并回收任意或特定子进程

头文件:unistd.h

系统调用:int execve(const char* path, char* const argv[], char* const envp[])

功能:创建新进程

头文件:stdlib.h

系统调用:int system(const char* command)

功能:执行shell命令

信号(软中断)

信号是提供异步事件处理机制的软件中断。

这些异步事件可能来自硬件设备,如用户同时按下了Ctrl键和C键,也可能来自系统内核,如试图访问尚未映射的虚拟内存,又或者来自用户进程,如尝试计算整数除以0的表达式。

进程之间可以相互发送信号,这使信号成为一种进程间通信的基本手段。

头文件:signal.h

系统调用:typedef void (*sighandler_t)(int)

                  sighandler_t signal(int signum, sighandler_t handler)

功能:设置调用进程针对特定信号的处理方式

头文件:signal.h

系统调用:int kill(pid_t pid, int signum)

功能:向指定的进程发送信号

头文件:signal.h

系统调用:int raise(int signum)

功能:向调用进程自己发送信号

头文件:unistd.h

系统调用:int pause(void)

功能:无限睡眠

头文件:unistd.h

系统调用:unsigned int sleep(unsigned int seconds)

功能:有限睡眠

头文件:unistd.h

系统调用:int usleep(useconds_t usec)

功能:更精确的有限睡眠

头文件:unistd.h

系统调用:unsigned int alarm(unsigned int seconds)

功能:设置闹钟

头文件:signal.h

系统调用:int sigfillset(sigset_t* sigset)

功能:填满信号集,即将信号集的全部信号位置1

头文件:signal.h

系统调用:int sigemptyset(sigset_t* sigset)

功能:清空信号集,即将信号集的全部信号位清0

头文件:signal.h

系统调用:int sigaddset(sigset_t* sigset, int signum)

功能:加入信号,即将信号集中与指定信号编号对应的信号位置1

头文件:signal.h

系统调用:int sigdelset(sigset_t* sigset, int signum)

功能:删除信号,即将信号集中与指定信号编号对应的信号位清0

头文件:signal.h

系统调用:int sigismember(const sigset_t* sigset, int signum)

功能:判断信号集中是否有某信号,即检查信号集中与指定信号编号对应的信号位是否为1

头文件:signal.h

系统调用:int sigprocmask(int how, const sigset_t* sigset, sigset_t* oldset)

功能:设置调用进程的信号掩码

头文件:signal.h

系统调用:int sigpending(sigset_t* sigset)

功能:获取调用进程的未决信号集

进程间通信

头文件:sys/stat.h

系统调用:int mkfifo(char const* pathname, mode_t mode)

功能:创建有名管道

头文件:unistd.h

系统调用:int pipe(int pipefd[2])

功能:创建无名管道

头文件:sys/ipc.h

系统调用:key_t ftok(const char* pathname, int proj_id)

功能:用于合成一个键(IPC对象的键)

头文件:sys/shm.h

系统调用:int shmget(key_t key, size_t size, int shmflg)

功能:创建新的或获取已有的共享内存

头文件:sys/shm.h

系统调用:void* shmat(int shmid, void const* shmaddr, int shmflg)

功能:加载共享内存,将物理内存中的共享区域映射到进程用户空间的虚拟内存中

头文件:sys/shm.h

系统调用:int shmdt(void const* shmaddr)

功能:卸载共享内存

头文件:sys/shm.h

系统调用:int shmctl(int shmid, IPC_RMID, NULL)

功能:销毁共享内存

头文件:sys/msg.h

系统调用:int msgget(key_t key, int msgflg)

功能:创建新的或获取已有的消息队列

头文件:sys/msg.h

系统调用:int msgsnd(int msgid, void const* msgp,  size_t msgsz, int msgflg)

功能:发送消息

头文件:sys/msg.h

系统调用:int msgrcv(int msgid, void* msgp, size_t msgsz, long msgtyp, int msgflg)

功能:接收消息

头文件:sys/msg.h

系统调用:int msgctl(int msgid, IPC_RMID, NULL)

功能:销毁消息队列

网络管理

头文件:sys/socket.h

系统调用:int socket(int domain, int type, int protocol)

功能:创建套接字

头文件:sys/socket.h

系统调用:int bind(int socket, struct sockaddr const* addr, socklen_t addrlen)

功能:将套接字和本地的地址结构绑定在一起

头文件:sys/socket.h

系统调用:int connect(int sockfd, struct sockaddr const* addr, socklen_t addrlen)

功能:将套接字和对方的地址结构连接在一起

头文件:sys/socket.h

系统调用:int listen(int sockfd, int backlog)

功能:启动侦听:在指定套接字上启动对连接请求的侦听功能

头文件:sys/socket.h

系统调用:int accept(int sockfd, struct sockaddr* addr, socklen_t* addrlen)

功能:等待并接受连接请求,在指定套接字上阻塞,知道连接建立完成

头文件:sys/socket.h

系统调用:ssize_t recv(int sockfd, void* buf, size_t count, int flags)

功能:接收数据

头文件:sys/socket.h

系统调用:ssize_t send(int sockfd, void const* buf, size_t count, int flags)

功能:发送数据

头文件:sys/socket.h

系统调用:ssize_t recvfrom(int sockfd, void* buf, size_t count, int flags, struct sockaddr*                   src_addr, socklen_t* addrlen)

功能:从哪里接收数据

头文件:sys/socket.h

系统调用:ssize_t sendto(int sockfd, void const* buf, size_t count, int flags, struct sockaddr                            const* dest_addr, socklen_t addrlen)

功能:发送数据到哪里

线程管理

头文件:pthread.h

系统调用:int pthread_create(pthread_t* tid, pthread_attr_t const* attr,

                void* (*start_routine)(void*), void* arg)

功能:创建新线程

头文件:pthread.h

系统调用:int pthread_join(pthread_t tid, void** retval)

功能:等待子线程终止,即其线程过程函数返回,并与之会和,同时回收该线程的资源

头文件:pthread.h

系统调用:int pthread_detach(pthread_t tid)

功能:使指定的线程进入分离状态

头文件:pthread.h

系统调用:pthread_t pthread_self(void)

功能:返回调用线程的(POSIX线程库的)TID

头文件:sys/syscall.h

系统调用:long int syscall(SYS_gettid)

功能:返回调用线程的(系统内核的)TID

头文件:pthread.h

系统调用:int pthread_equal(pthread_t t1, pthread_t t2)

功能:若两个参数所表示的TID相等返回非零,否则返回0

头文件:pthread.h

系统调用:int pthread_mutex_init(pthread_mutex_t* mutex, pthread_mutexattr_t const* attr)

功能:初始化互斥锁

头文件:pthread.h

系统调用:int pthread_mutex_destory(pthread_mutex_t* mutex)

功能:销毁互斥锁

头文件:pthread.h

系统调用:int pthread_mutex_lock(pthread_mutex_t* mutex)

功能:锁定互斥锁

头文件:pthread.h

系统调用:int pthread_mutex_unlock(pthread_mutex_t* mutex)

功能:解锁互斥体

头文件:pthread.h

系统调用:int pthread_cond_init(pthread_cond_t* cond, const pthread_condattr_t* attr)

功能:初始化条件变量

头文件:pthread.h

系统调用:int pthread_cond_destory(pthread_cond_t* cond)

功能:销毁条件变量

头文件:pthread.h

系统调用:int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex)

功能:睡入条件变量

头文件:pthread.h

系统调用:int pthread_cond_signal(pthread_cond_t* cond)

功能:唤醒在条件变量中睡眠的一个线程

http://www.dtcms.com/a/526423.html

相关文章:

  • 个人做网站费用wordpress开放平台
  • 东莞网站建设aj博客wordpress地址和找点地址
  • 常见网站模式如何申请一个自己的网站
  • 我想找个郑州做网站的西安门户网站建设公司哪家好
  • 深入浅出Java 8 Lambda表达式
  • 软件开发 网站开发 不同赣州企业网
  • 域名注册万网北京网站优化步
  • 东莞电子网站建设dw设计一个简单网站
  • 东莞网站维护买到域名怎么做网站
  • 【内存池】动态内存分配机制
  • 一键注册所有网站涉密网络运行维护服务外包的单位
  • 深圳市 网站建设450做自己的视频网站
  • 免费空间的个人网站为什么wordpress在ie打开很慢
  • 【1024节】一年一年又是一年
  • 武义建设局网站网站建设 技术方案
  • 网站别人备案怎么办dedecms wap网站模板下载
  • 青岛seo整站优化织梦网站如何做地区分站
  • 网站首页图片尺寸广州安全教育平台官网登录
  • 南阳网站推广站长之家alexa排名怎么看
  • 开家网站建设培训学校付钱做编程题目的网站
  • 商业网站的特点wordpress需要多少运存
  • 怎么做网站盗号市场推广的方法和规划
  • 好的h5制作网站模板下载专业类搜题软件
  • 建设部网站实名制举报佛山搜索seo网络推广
  • 基于jsp的电子商务网站开发wordpress后台添加友情链接
  • 湖州网站建设制作世界上最有趣的网站
  • Modbus面试高频问题标准答案
  • 深圳招聘一般在哪个网站岳阳网络公司
  • 网站ico图标放在哪里网站制作是怎样做的
  • 网站制作哪里好网站建设要什么