常用的 Linux 系统调用

在 Linux 系统中,系统调用是应用程序与内核之间交互的接口,它允许程序执行内核提供的服务,例如文件操作、进程管理、内存分配等。以下是一些常用的 Linux 系统调用:

1. 进程管理

  • fork():创建一个新进程,父进程和子进程会从 fork() 返回,但返回值不同(父进程返回子进程的 PID,子进程返回 0)。
  • exec():用于执行一个新程序,替换当前进程的映像。常见的有 execve()execl()execp() 等。
  • exit():终止进程的执行,并返回一个退出状态码给父进程。
  • wait() / waitpid():等待一个子进程终止,获取子进程的退出状态。
  • getpid():获取当前进程的 PID(进程标识符)。
  • getppid():获取当前进程的父进程 PID。
  • kill():发送信号给进程,常用于进程间通信(IPC)或终止进程。
  • clone():创建一个新进程或线程,是 fork() 的一种更灵活的实现方式,支持更多的参数控制。

2. 文件操作

  • open():打开文件,返回文件描述符。
  • read():从文件描述符读取数据。
  • write():向文件描述符写入数据。
  • close():关闭文件描述符。
  • lseek():移动文件描述符的读写位置。
  • unlink():删除一个文件或目录。
  • mkdir():创建目录。
  • rmdir():删除目录。
  • stat() / fstat():获取文件的状态信息,如文件大小、权限、创建时间等。
  • chown():修改文件的拥有者和所属组。
  • chmod():修改文件的权限。
  • rename():重命名文件或移动文件。

3. 内存管理

  • mmap():映射文件或设备到内存,支持内存映射文件的高效读写。
  • munmap():解除内存映射。
  • brk() / sbrk():改变进程的堆空间大小(较老的方法,现在一般使用 mmap() 来管理内存)。
  • mprotect():改变内存页面的访问权限。
  • mlock() / munlock():锁定或解锁内存页,以防止它们被交换到磁盘上。

4. 系统信息

  • gettimeofday():获取当前时间。
  • clock_gettime():获取指定时钟的时间(高精度)。
  • uname():获取系统信息,如操作系统名称、版本、体系结构等。
  • sysinfo():获取系统的总体信息,如总内存、空闲内存、进程数等。

5. 信号处理

  • signal():设置信号的处理方式(通常使用 sigaction() 替代)。
  • sigaction():设置信号的处理行为,可以自定义信号处理函数。
  • sigprocmask():屏蔽或取消屏蔽信号。
  • kill():向一个进程发送信号。
  • pause():使进程暂停,直到接收到信号。

6. 管道与进程间通信 (IPC)

  • pipe():创建一个管道,返回两个文件描述符,用于进程间的单向通信。
  • socket():创建一个套接字,用于网络通信。
  • bind()listen()accept()connect():用于建立和管理网络连接。
  • mmap():也可以用于进程间的共享内存。
  • semop():操作信号量,用于进程间同步。
  • msgget() / msgsnd() / msgrcv():用于消息队列的创建和操作。
  • shmget() / shmat() / shmdt():用于共享内存的操作。

7. 网络操作

  • socket():创建一个网络套接字。
  • bind():绑定一个套接字到一个地址。
  • listen():监听连接请求。
  • accept():接受一个连接。
  • connect():建立与服务器的连接。
  • send() / recv():发送和接收数据。
  • sendto() / recvfrom():发送和接收数据报。

8. 定时与调度

  • timer_create()timer_settime():创建和设置定时器。
  • nanosleep():休眠指定的时间,提供更高精度的休眠。
  • alarm():设置一个定时器,用于进程在指定时间后接收 SIGALRM 信号。

9. 文件系统管理

  • mount():挂载文件系统。
  • umount():卸载文件系统。
  • chroot():改变进程的根目录。
  • pivot_root():切换根文件系统。

10. 权限与用户管理

  • getuid():获取当前进程的用户 ID。
  • setuid():设置进程的用户 ID。
  • getgid():获取当前进程的组 ID。
  • setgid():设置进程的组 ID。
  • geteuid():获取当前进程的有效用户 ID。
  • seteuid():设置进程的有效用户 ID。

这些系统调用是 Linux 操作系统提供的基础接口,程序通过调用它们来执行系统级操作,从而使得应用程序能够与操作系统进行交互,完成各种任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值