2020-06-17

syscalls

1. syscalls相关摘录
 1.1 系统调用可以大致分为六大类:
 1.2 典型实现(Linux)
2. Linux系统调用列表
3. 使用 strace 跟踪系统调用
4. See also

1. syscalls相关摘录

https://en.wikipedia.org/wiki/System_call
在Unix的, 类Unix和其他POSIX兼容的操作系统, 流行的系统调用open, read, write, close, wait, exec, fork, exit, 和kill。许多现代操作系统都有数百个系统调用。例如,
  • Linux和OpenBSD各自具有300多个不同的调用; 
  • NetBSD具有近500个调用, FreeBSD具有500多个; 
  • Windows 7具有接近700的调用; 
  • 而Plan 9具有51.
诸如strace, ftrace和truss之类的工具允许进程从开始执行并报告该进程调用的所有系统调用, 或者可以附加到已经运行的进程并拦截该进程进行的任何系统调用(如果该操作未违反以下权限)用户。程序的这种特殊功能通常也可以通过系统调用来实现, 例如, strace可以通过ptrace来实现, 也可以通过对文件procfs中的系统调用来实现。

1.1 系统调用可以大致分为六大类:

1. 进程控制
Process control
create process (fork…)创建进程 (fork)
terminate process终止进程
load, execute加载, 执行
get/set process attributes获取/设置 进程属性
wait for time, wait event, signal event等待时间, 等待事件, 信号事件
allocate and free memory分配和释放内存
2. 文件管理
File management
create file, delete file创建文件, 删除文件
open, close打开, 关闭
read, write, reposition读, 写, 重新定位
get/set file attributes获取/设置 文件属性
3. 设备管理
Device management
request device, release device请求设备, 释放设备
read, write, reposition读, 写, 重新定位
get/set device attributes获取/设置 设备属性
logically attach or detach devices逻辑上连接或分离设备
4. 信息维护
Information maintenance
get/set time or date获取/设置时间或日期
get/set system data获取/设置系统数据
get/set process, file, or device attributes获取/设置进程, 文件或设备属性
5. 通讯
Communication
create, delete communication connection创建, 删除通讯连接
send, receive messages发送, 接收消息
transfer status information传输状态信息
attach or detach remote devices连接或分离远程设备
6. 保护 Protectionget/set file permissions获取/设置 文件权限

1.2 典型实现(Linux)

https://zh.wikipedia.org/wiki/系统调用
在电脑中, 系统调用(英语:system call), 指运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。 系统调用提供用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态运行。如设备IO操作或者进程间通信。
操作系统的进程空间可分为用户空间和内核空间, 它们需要不同的执行权限。其中系统调用运行在内核空间。
系统调用和普通库函数调用非常相似, 只是系统调用由操作系统内核提供, 运行于内核核心态, 而普通的库函数调用由函数库或用户自己提供, 运行于用户态。
 Linux 的系统调用通过 int 80h 实现, 用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是:
  1. 应用程序调用库函数(API);
  2. API 将系统调用号存入 EAX, 然后通过中断调用使系统进入内核态;
  3. 内核中的中断处理函数根据系统调用号, 调用对应的内核函数(系统调用);
  4. 系统调用完成相应功能, 将返回值存入 EAX, 返回到中断处理函数;
  5. 中断处理函数返回到 API 中;
  6. API 将 EAX 返回给应用程序。
 应用程序调用系统调用的过程是:
  1. 把系统调用的编号存入 EAX;
  2. 把函数参数存入其它通用寄存器;
  3. 触发 0x80 号中断(int 0x80)。

2. Linux系统调用列表

2020-04-11 470个: https://jlk.fjfi.cvut.cz/arch/manpages/man/syscalls.2#NOTES
2002-03-01 206个 有中文描述: https://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html
NSystem callKernelNotes中文描述类别

_llseek(2)1.2
在64位地址空间里移动文件指针文件系统控制

_newselect(2)2



_sysctl(2)2
读/写系统参数系统控制
taccept(2)2See notes on socketcall(2)响应socket连接请求socket控制
taccept4(2)2.6.28



access(2)1
确定文件的可存取性文件系统控制

acct(2)1
启用或禁止进程记账系统控制

add_key(2)2.6.10



adjtimex(2)1
调整系统时钟系统控制

alarm(2)1
设置进程的闹钟系统控制

alloc_hugepages(2)2.5.36Removed in 2.5.44


arc_gettls(2)3.9ARC only


arc_settls(2)3.9ARC only


arc_usr_cmpxchg(2)4.9ARC only


arch_prctl(2)2.6x86_64, x86 since 4.12


atomic_barrier(2)2.6.34m68k only


atomic_cmpxchg_32(2)2.6.34m68k only


bdflush(2)1.2Deprecated (does nothing) since 2.6控制bdflush守护进程系统控制

bfin_spinlock(2)2.6.22Blackfin only (port removed in Linux 4.17)


bind(2)2See notes on socketcall(2)绑定socket到端口socket控制

bpf(2)3.18



breakpoint(2)2.2ARM OABI only, defined with __ARM_NR prefix


brk(2)1
改变数据段空间的分配内存管理

cacheflush(2)1.2Not on x86将指定缓冲区中的内容写回磁盘内存管理

capget(2)2.2
获取进程权限进程控制

capset(2)2.2
设置进程权限进程控制

chdir(2)1
改变当前工作目录文件系统控制

chmod(2)1
改变文件方式文件系统控制
tchown(2)2.2See chown(2) for version details改变文件的属主或用户组文件系统控制
tchown32(2)2.4



chroot(2)1
改变根目录文件系统控制

clock_adjtime(2)2.6.39



clock_getres(2)2.6



clock_gettime(2)2.6



clock_nanosleep(2)2.6



clock_settime(2)2.6


tclone(2)1
按指定条件创建子进程进程控制
tclone2(2)2.4IA-64 only

tclone3(2)5.3



close(2)1
关闭文件描述字文件系统控制

cmpxchg_badaddr(2)2.6.36Tile only (port removed in Linux 4.17)


connect(2)2See notes on socketcall(2)连接远程主机socket控制

copy_file_range(2)4.5



creat(2)1
创建新文件文件系统控制

create_module(2)1Removed in 2.6创建可装载的模块项系统控制

delete_module(2)1
删除可装载的模块项系统控制

dma_memcpy(2)2.6.22Blackfin only (port removed in Linux 4.17)

tdup(2)1
复制已打开的文件描述字文件系统控制
tdup2(2)1
按指定条件复制文件描述字文件系统控制
tdup3(2)2.6.27


tepoll_create(2)2.6


tepoll_create1(2)2.6.27



epoll_ctl(2)2.6



epoll_pwait(2)2.6.19



epoll_wait(2)2.6


teventfd(2)2.6.22


teventfd2(2)2.6.27



execv(2)2SPARC/SPARC64 only, for compatibility with SunOS


execve(2)1
运行可执行文件进程控制

execveat(2)3.19



exit_group(2)2.6



exit(2)1
中止进程进程控制

faccessat(2)2.6.16


tfadvise64_64(2)2.6


tfadvise64(2)2.6



fallocate(2)2.6.23



fanotify_init(2)2.6.37



fanotify_mark(2)2.6.37



fchdir(2)1
参见chdir文件系统控制

fchmod(2)1
参见chmod文件系统控制

fchmodat(2)2.6.16


tfchown(2)1
参见chown文件系统控制
tfchown32(2)2.4



fchownat(2)2.6.16


tfcntl(2)1
文件控制文件系统控制
tfcntl64(2)2.4



fdatasync(2)2



fgetxattr(2)2.6; 2.4.18



finit_module(2)3.8



flistxattr(2)2.6; 2.4.18



flock(2)2
文件加/解锁文件系统控制

fork(2)1
创建一个新进程进程控制

free_hugepages(2)2.5.36Removed in 2.5.44


fremovexattr(2)2.6; 2.4.18



fsconfig(2)5.2



fsetxattr(2)2.6; 2.4.18



fsmount(2)5.2



fsopen(2)5.2



fspick(2)5.2


tfstat(2)1
参见stat文件系统控制
tfstat64(2)2.4



fstatat64(2)2.6.16


tfstatfs(2)1
参见statfs文件系统控制
tfstatfs64(2)2.6



fsync(2)1
把文件在内存中的部分写回磁盘文件系统控制
tftruncate(2)1
参见truncate文件系统控制
tftruncate64(2)2.4



futex(2)2.6



futimesat(2)2.6.16



get_kernel_syms(2)1Removed in 2.6


get_mempolicy(2)2.6.6



get_robust_list(2)2.6.17



get_thread_area(2)2.6



get_tls(2)4.15ARM OABI only, has __ARM_NR prefix


getcpu(2)2.6.19



getcwd(2)2.2


tgetdents(2)2
读取目录项文件系统控制
tgetdents64(2)2.4



getdomainname(2)2.2SPARC, SPARC64; available as osf_getdomainname(2) on Alpha since Linux 2.0取域名网络管理

getdtablesize(2)2SPARC (removed in 2.6.26), available on Alpha as osf_getdtablesize(2)进程所能打开的最大文件数进程控制
tgetegid(2)1
获取有效组标识号用户管理
tgetegid32(2)2.4


tgeteuid(2)1
获取有效用户标识号用户管理
tgeteuid32(2)2.4


tgetgid(2)1
获取组标识号用户管理
tgetgid32(2)2.4


tgetgroups(2)1
获取后补组标志清单用户管理
tgetgroups32(2)2.4



gethostname(2)2Alpha, was available on SPARC up to Linux 2.6.26获取本主机名称网络管理

getitimer(2)1
获取计时器值系统控制

getpagesize(2)2Not on x86获取页面大小内存管理

getpeername(2)2See notes on socketcall(2)获取通信对方的socket名字socket控制

getpgid(2)1
获取指定进程组标识号进程控制

getpgrp(2)1
获取当前进程组标识号进程控制

getpid(2)1
获取进程标识号进程控制

getppid(2)1
获取父进程标识号进程控制

getpriority(2)1
获取调度优先级进程控制

getrandom(2)3.17


tgetresgid(2)2.2
分别获取真实的,有效的和保存过的组标识号用户管理
tgetresgid32(2)2.4


tgetresuid(2)2.2
分别获取真实的,有效的和保存过的用户标识号用户管理
tgetresuid32(2)2.4



getrlimit(2)1
获取系统资源上限系统控制

getrusage(2)1
获取系统资源使用情况系统控制

getsid(2)2
获取会晤标识号进程控制

getsockname(2)2See notes on socketcall(2)取得本地socket名字socket控制

getsockopt(2)2See notes on socketcall(2)取端口设置socket控制

gettid(2)2.4.11



gettimeofday(2)1
取时间和时区系统控制
tgetuid(2)1
获取用户标识号用户管理
tgetuid32(2)2.4



getunwind(2)2.4.8IA-64 only; deprecated


getxattr(2)2.6; 2.4.18



getxgid(2)2Alpha only; see NOTES


getxpid(2)2Alpha only; see NOTES


getxuid(2)2Alpha only; see NOTES


init_module(2)1
初始化模块系统控制

inotify_add_watch(2)2.6.13



inotify_init(2)2.6.13



inotify_init1(2)2.6.27



inotify_rm_watch(2)2.6.13



io_cancel(2)2.6



io_destroy(2)2.6



io_getevents(2)2.6



io_pgetevents(2)4.18



io_setup(2)2.6



io_submit(2)2.6



io_uring_enter(2)5.1



io_uring_register(2)5.1



io_uring_setup(2)5.1



ioctl(2)1
I/O总控制函数系统控制

ioperm(2)1
设置端口I/O权限系统控制

iopl(2)1
改变进程I/O权限级别系统控制

ioprio_get(2)2.6.13



ioprio_set(2)2.6.13



ipc(2)1
进程间通信总控制调用进程间通信

kcmp(2)3.5



kern_features(2)3.7SPARC64 only


kexec_file_load(2)3.17



kexec_load(2)2.6.13



keyctl(2)2.6.10



kill(2)1
向进程或进程组发信号进程间通信
tlchown(2)1See chown(2) for version details参见chown文件系统控制
tlchown32(2)2.4



lgetxattr(2)2.6; 2.4.18



link(2)1
创建链接文件系统控制

linkat(2)2.6.16



listen(2)2See notes on socketcall(2)监听socket端口socket控制

listxattr(2)2.6; 2.4.18



llistxattr(2)2.6; 2.4.18



lookup_dcookie(2)2.6



lremovexattr(2)2.6; 2.4.18



lseek(2)1
移动文件指针文件系统控制

lsetxattr(2)2.6; 2.4.18



lstat(2)1
参见stat文件系统控制

lstat64(2)2.4



madvise(2)2.4



mbind(2)2.6.6



membarrier(2)3.17



memfd_create(2)3.17



memory_ordering(2)2.2SPARC64 only


metag_get_tls(2)3.9Metag only (port removed in Linux 4.17)


metag_set_fpu_flags(2)3.9Metag only (port removed in Linux 4.17)


metag_set_tls(2)3.9Metag only (port removed in Linux 4.17)


metag_setglobalbit(2)3.9Metag only (port removed in Linux 4.17)


migrate_pages(2)2.6.16



mincore(2)2.4



mkdir(2)1
创建目录文件系统控制

mkdirat(2)2.6.16



mknod(2)1
创建索引节点文件系统控制

mknodat(2)2.6.16


tmlock(2)2
内存页面加锁内存管理
tmlock2(2)4.4



mlockall(2)2
调用进程所有内存页面加锁内存管理
tmmap(2)1
映射虚拟内存页内存管理
tmmap2(2)2.4



modify_ldt(2)1
读写进程的本地描述表进程控制

mount(2)1
安装文件系统文件系统控制

move_mount(2)5.2



move_pages(2)2.6.18



mprotect(2)1
设置内存映像保护内存管理

mq_getsetattr(2)2.6.6



mq_notify(2)2.6.6



mq_open(2)2.6.6



mq_timedreceive(2)2.6.6



mq_timedsend(2)2.6.6



mq_unlink(2)2.6.6



mremap(2)2
重新映射虚拟内存地址内存管理

msgctl(2)2See notes on ipc(2)消息控制操作进程间通信

msgget(2)2See notes on ipc(2)获取消息队列进程间通信

msgrcv(2)2See notes on ipc(2)取消息进程间通信

msgsnd(2)2See notes on ipc(2)发消息进程间通信

msync(2)2
将映射内存中的数据写回磁盘内存管理

munlock(2)2
内存页面解锁内存管理

munlockall(2)2
调用进程所有内存页面解锁内存管理

munmap(2)1
去除内存页映射内存管理

name_to_handle_at(2)2.6.39



nanosleep(2)2
使进程睡眠指定的时间进程控制

newfstatat(2)2.6.16See stat(2)


nfsservctl(2)2.2Removed in 3.1对NFS守护进程进行控制系统控制

nice(2)1
改变分时进程的优先级进程控制

old_adjtimex(2)2Alpha only; see NOTES


old_getrlimit(2)2.4Old variant of getrlimit(2) that used a different value for RLIM_INFINITY


oldfstat(2)1



oldlstat(2)1



oldolduname(2)1



oldstat(2)1



oldumount(2)2.4.116Name of the old umount(2) syscall on Alpha


olduname(2)1



open_by_handle_at(2)2.6.39



open_tree(2)5.2



open(2)1
打开文件文件系统控制
topenat(2)2.6.16


topenat2(2)5.6



or1k_atomic(2)3.1OpenRISC 1000 only


pause(2)1
挂起进程,等待信号进程控制

pciconfig_iobase(2)2.2.15; 2.4Not on x86


pciconfig_read(2)2.0.26; 2.2Not on x86


pciconfig_write(2)2.0.26; 2.2Not on x86


perf_event_open(2)2.6.31Was perf_counter_open() in 2.6.31; renamed in 2.6.32


perfctr(2)2.2SPARC only; removed in 2.6.34


perfmonctl(2)2.4IA-64 only


personality(2)1.2
设置进程运行域进程控制

pidfd_getfd(2)5.6



pidfd_open(2)5.3



pidfd_send_signal(2)5.1


tpipe(2)1
创建管道进程间通信
tpipe2(2)2.6.27



pivot_root(2)2.4



pkey_alloc(2)4.8



pkey_free(2)4.8



pkey_mprotect(2)4.8



poll(2)2.0.36; 2.2
I/O多路转换文件系统控制

ppoll(2)2.6.16



prctl(2)2.2
对进程进行特定操作进程控制
tpread(2)
Used for pread64(2) on AVR32 (port removed in Linux 4.12) and Blackfin (port removed in Linux 4.17)对文件随机读文件系统控制
tpread64(2)
Added as "pread" in 2.2; renamed "pread64" in 2.6


preadv(2)2.6.30



preadv2(2)4.6



prlimit64(2)2.6.36



process_vm_readv(2)3.2



process_vm_writev(2)3.2



pselect6(2)2.6.16



ptrace(2)1
进程跟踪进程控制
tpwrite(2)
Used for pwrite64(2) on AVR32 (port removed in Linux 4.12) and Blackfin (port removed in Linux 4.17)对文件随机写文件系统控制
tpwrite64(2)
Added as "pwrite" in 2.2; renamed "pwrite64" in 2.6

tpwritev(2)2.6.30


tpwritev2(2)4.6



query_module(2)2.2Removed in 2.6查询模块信息系统控制

quotactl(2)1
控制磁盘配额文件系统控制

read(2)1
读文件文件系统控制

readahead(2)2.4.13



readdir(2)1
读取目录项文件系统控制

readlink(2)1
读符号链接的值文件系统控制

readlinkat(2)2.6.16



readv(2)2
从文件读入数据到缓冲数组中文件系统控制

reboot(2)1
重新启动系统控制

recv(2)2See notes on socketcall(2)通过socket接收信息socket控制

recvfrom(2)2See notes on socketcall(2)接收UDP信息socket控制

recvmmsg(2)2.6.33



recvmsg(2)2See notes on socketcall(2)参见recvsocket控制

remap_file_pages(2)2.6Deprecated since 3.16


removexattr(2)2.6; 2.4.18



rename(2)1
文件改名文件系统控制
trenameat(2)2.6.16


trenameat2(2)3.15



request_key(2)2.6.10



restart_syscall(2)2.6



riscv_flush_icache(2)4.15RISC-V only


rmdir(2)1
删除目录文件系统控制

rseq(2)4.18



rt_sigaction(2)2.2



rt_sigpending(2)2.2



rt_sigprocmask(2)2.2



rt_sigqueueinfo(2)2.2



rt_sigreturn(2)2.2



rt_sigsuspend(2)2.2



rt_sigtimedwait(2)2.2



rt_tgsigqueueinfo(2)2.6.31



rtas(2)2.6.2PowerPC/PowerPC64 only


s390_guarded_storage(2)4.12s390 only


s390_pci_mmio_read(2)3.19s390 only


s390_pci_mmio_write(2)3.19s390 only


s390_runtime_instr(2)3.7s390 only


s390_sthyi(2)4.15s390 only


sched_get_affinity(2)2.6Name of sched_getaffinity(2) on SPARC and SPARC64


sched_get_priority_max(2)2
取得静态优先级的上限进程控制

sched_get_priority_min(2)2
取得静态优先级的下限进程控制

sched_getaffinity(2)2.6



sched_getattr(2)3.14



sched_getparam(2)2
取得进程的调度参数进程控制

sched_getscheduler(2)2
取得指定进程的调度策略进程控制

sched_rr_get_interval(2)2
取得按RR算法调度的实时进程的时间片长度进程控制

sched_set_affinity(2)2.6Name of sched_setaffinity(2) on SPARC and SPARC64


sched_setaffinity(2)2.6



sched_setattr(2)3.14



sched_setparam(2)2
设置进程的调度参数进程控制

sched_setscheduler(2)2
设置指定进程的调度策略和参数进程控制

sched_yield(2)2
进程主动让出处理器,并将自己等候调度队列队尾进程控制

seccomp(2)3.17



select(2)1
对多路同步I/O进行轮询socket控制

semctl(2)2See notes on ipc(2)信号量控制进程间通信

semget(2)2See notes on ipc(2)获取一组信号量进程间通信

semop(2)2See notes on ipc(2)信号量操作进程间通信

semtimedop(2)2.6; 2.4.22



send(2)2See notes on socketcall(2)通过socket发送信息socket控制

sendfile(2)2.2
在文件或端口间传输数据socket控制

sendfile64(2)2.6; 2.4.19



sendmmsg(2)3



sendmsg(2)2See notes on socketcall(2)参见sendsocket控制

sendto(2)2See notes on socketcall(2)发送UDP信息socket控制

set_mempolicy(2)2.6.6



set_robust_list(2)2.6.17



set_thread_area(2)2.6



set_tid_address(2)2.6



set_tls(2)2.6.11ARM OABI/EABI only (constant has __ARM_NR prefix)


setdomainname(2)1
设置域名网络管理
tsetfsgid(2)1.2
设置文件系统检查时使用的组标识号用户管理
tsetfsgid32(2)2.4


tsetfsuid(2)1.2
设置文件系统检查时使用的用户标识号用户管理
tsetfsuid32(2)2.4


tsetgid(2)1
设置组标志号用户管理
tsetgid32(2)2.4


tsetgroups(2)1
设置后补组标志清单用户管理
tsetgroups32(2)2.4



sethae(2)2Alpha only; see NOTES


sethostname(2)1
设置主机名称网络管理

setitimer(2)1
设置计时器值系统控制

setns(2)3



setpgid(2)1
设置指定进程组标志号进程控制

setpgrp(2)2Alternative name for setpgid(2) on Alpha设置当前进程组标志号进程控制

setpriority(2)1
设置调度优先级进程控制
tsetregid(2)1
分别设置真实和有效的的组标识号用户管理
tsetregid32(2)2.4


tsetresgid(2)2.2
分别设置真实的,有效的和保存过的组标识号用户管理
tsetresgid32(2)2.4


tsetresuid(2)2.2
分别设置真实的,有效的和保存过的用户标识号用户管理
tsetresuid32(2)2.4


tsetreuid(2)1
分别设置真实和有效的用户标识号用户管理
tsetreuid32(2)2.4



setrlimit(2)1
设置系统资源上限系统控制

setsid(2)1
设置会晤标识号进程控制

setsockopt(2)2See notes on socketcall(2)设置端口参数socket控制

settimeofday(2)1
设置时间和时区系统控制
tsetuid(2)1
设置用户标志号用户管理
tsetuid32(2)2.4



setup(2)1Removed in 2.2


setxattr(2)2.6; 2.4.18



sgetmask(2)1



shmat(2)2See notes on ipc(2)连接共享内存进程间通信

shmctl(2)2See notes on ipc(2)控制共享内存进程间通信

shmdt(2)2See notes on ipc(2)拆卸共享内存进程间通信

shmget(2)2See notes on ipc(2)获取共享内存进程间通信

shutdown(2)2See notes on socketcall(2)关闭socket上的连接socket控制

sigaction(2)1
设置对指定信号的处理方法进程间通信

sigaltstack(2)2.2



signal(2)1
参见signal进程间通信

signalfd(2)2.6.22



signalfd4(2)2.6.27



sigpending(2)1
为指定的被阻塞信号设置队列进程间通信

sigprocmask(2)1
根据参数对信号集中的信号执行阻塞/解除阻塞等操作进程间通信

sigreturn(2)1



sigsuspend(2)1
挂起进程等待特定信号进程间通信

socket(2)2See notes on socketcall(2)建立socketsocket控制

socketcall(2)1
socket系统调用socket控制

socketpair(2)2See notes on socketcall(2)创建一对已联接的无名socketsocket控制

spill(2)2.6.13Xtensa only


splice(2)2.6.17



spu_create(2)2.6.16PowerPC/PowerPC64 only


spu_run(2)2.6.16PowerPC/PowerPC64 only


sram_alloc(2)2.6.22Blackfin (port removed in Linux 4.17)


sram_free(2)2.6.22Blackfin (port removed in Linux 4.17)


ssetmask(2)1
ANSI C的信号处理函数,作用类似sigaction进程间通信
tstat(2)1
取文件状态信息文件系统控制
tstat64(2)2.4


tstatfs(2)1
取文件系统信息文件系统控制
tstatfs64(2)2.6



statx(2)4.11



stime(2)1
设置系统日期和时间系统控制

subpage_prot(2)2.6.25PowerPC/PowerPC64 only

tswapcontext(2)2.6.3PowerPC/PowerPC64 only

tswapcontext(2)2.6.3PowerPC only


swapoff(2)1
关闭交换文件和设备系统控制

swapon(2)1
打开交换文件和设备系统控制

switch_endian(2)4.1PowerPC64 only


symlink(2)1
创建符号链接文件系统控制

symlinkat(2)2.6.16


tsync_file_range(2)2.6.17


tsync_file_range2(2)2.6.22



sync(2)1
将内存缓冲区数据写回硬盘内存管理

syncfs(2)2.6.39



sys_debug_setcontext(2)2.6.11PowerPC only


syscall(2)1Still available on ARM OABI and MIPS O32 ABI


sysfs(2)1.2
取核心支持的文件系统类型系统控制

sysinfo(2)1
取得系统信息系统控制

syslog(2)1



sysmips(2)2.6.0MIPS only


tee(2)2.6.17



tgkill(2)2.6



time(2)1
取得系统时间系统控制

timer_create(2)2.6



timer_delete(2)2.6



timer_getoverrun(2)2.6



timer_gettime(2)2.6



timer_settime(2)2.6



timerfd_create(2)2.6.25



timerfd_gettime(2)2.6.25



timerfd_settime(2)2.6.25



times(2)1
取进程运行时间系统控制

tkill(2)2.6; 2.4.22


ttruncate(2)1
截断文件文件系统控制
ttruncate64(2)2.4



ugetrlimit(2)2.4



umask(2)1
设置文件权限掩码文件系统控制

umount(2)1
卸下文件系统文件系统控制

umount2(2)2.2



uname(2)1
获取当前UNIX系统的名称、版本和主机等信息系统控制

unlink(2)1
删除链接文件系统控制

unlinkat(2)2.6.16



unshare(2)2.6.16



uselib(2)1
选择要使用的二进制函数库系统控制

userfaultfd(2)4.3


tusr26(2)2.4.8.1ARM OABI only

tusr32(2)2.4.8.1ARM OABI only


ustat(2)1
取文件系统信息文件系统控制

utime(2)1
改变文件的访问修改时间文件系统控制

utimensat(2)2.6.22



utimes(2)2.2
参见utime文件系统控制

utrap_install(2)2.2SPARC64 only


vfork(2)2.2
创建一个子进程, 以供执行新程序, 常与execve等同时使用进程控制

vhangup(2)1
挂起当前终端系统控制
tvm86(2)2.0.28; 2.2
进入模拟8086模式系统控制
tvm86old(2)1Was "vm86"; renamed in 2.0.28/2.2


vmsplice(2)2.6.17



wait4(2)1
参见waitpid进程控制

waitid(2)2.6.10



waitpid(2)1
等待指定子进程终止进程控制

write(2)1
写文件文件系统控制

writev(2)2
将缓冲数组里的数据写入文件文件系统控制

xtensa(2)2.6.13Xtensa only


3. 使用 strace 跟踪系统调用

摘录自: 使用Linux系统调用的内核命令, IBM developerWorks
原文 P:2007-03-21 Updata:2018-08-20; 译文 P:2010-09-21
https://developer.ibm.com/technologies/linux/tutorials/l-system-calls/
https://www.ibm.com/developerworks/cn/linux/l-system-calls/index.html

使用 strace 跟踪系统调用
Linux 内核提供了一种非常有用的方法来跟踪某个进程所调用的系统调用(以及该进程所接收到的信号)。这个工具就是 strace, 它可以在命令行中执行, 使用希望跟踪的应用程序作为参数。例如, 如果您希望了解在执行 date 命令时都执行了哪些系统调用, 可以键入下面的命令:
$ strace date
结果会产生大量信息, 显示在执行 date 命令过程中所执行的各个系统调用。您会看到加载共享库、映射内存, 最后跟踪到的是在标准输出中生成日期信息:
...
write(1, "2020-06-17T22:26:50 CST\n", 24) = 24
...

4. See also

Linux syscalls 手册 提供了 Linux 中可以使用的系统调用的完整列表。
https://linux.die.net/man/2/syscalls
https://en.wikipedia.org/wiki/Linux_kernel_interfaces#Linux_API

没有评论:

发表评论

Diode

导航 (返回顶部) 1. Diode 1.1 Diode 概述 1.2 肖克利二极管方程 1.3 缩写 Abbreviations 2. 主要功能 2.1 单向电流 (Unidirectional current flow) 2.2 阈值电压 (Threshold...