unix/linux系统编程

本文介绍了Unix/Linux系统编程的基本概念,包括系统调用、C语言库函数在编程中的作用,以及如何使用man命令查阅函数原型。同时,概述了进程控制、文件系统操作、系统控制等关键领域的系统调用,并提到了进程间通信的各种方法。
摘要由CSDN通过智能技术生成

       shell命令是操作系统提供给普通用户使用的接口,系统调用是操作系统提供给程序员使用的接口。

       unix/linux系统编程是指程序员使用系统调用C语言本身携带的库函数来设计和编写具有某一特定功能的程序。实际上,C语言的库函数也是通过系统调用来实现的,它封装了系统调用,并在此基础上为方便程序员的使用而增加了一些功能。在编写跨平台应用程序时,最好使用C语言的标准库函数以方便移植。linux为上层应用程序的开发提供了丰富的系统调用,应用程序只需包含相应的头文件就可以使用这些函数。实际上,这些系统调用都是以函数库的方式提供的。编译程序时,gcc会自动链接一些常用的库。对于gcc不会自动链接的库,则在编译程序时需要制定所使用的库(编译程序时使用-l<库名>-L<库所在的目录项>选项)。

     对于初学者来说,很难记得所有的函数,参数及所在头文件,所以一定要记着使用man命令查看函数原型,这就像java的API文档一样,十分重要。学会看帮助文档,这比去任何论坛提问都有效。因为存在shell命令与系统调用与库函数名重名的现象,所以使用如下方法查看:

man shell命令|系统调用|库函数名

man 1 shell命令(默认)

man 2 系统调用

man 3 库函数名

下面是转来的linux系统调用列表,比较全,且是中文注释

一、进程控制:

fork

创建一个新进程

clone

按指定条件创建子进程

execve

运行可执行文件

exit

中止进程

_exit

立即中止当前进程

getdtablesize

进程所能打开的最大文件数

getpgid

获取指定进程组标识号

setpgid

设置指定进程组标志号

getpgrp

获取当前进程组标识号

setpgrp

设置当前进程组标志号

getpid

获取进程标识号

getppid

获取父进程标识号

getpriority

获取调度优先级

setpriority

设置调度优先级

modify_ldt

读写进程的本地描述表

nanosleep

使进程睡眠指定的时间

nice

改变分时进程的优先级

pause

挂起进程,等待信号

personality

设置进程运行域

prctl

对进程进行特定操作

ptrace

进程跟踪

sched_get_priority_max

取得静态优先级的上限

sched_get_priority_min

取得静态优先级的下限

sched_getparam

取得进程的调度参数

sched_getscheduler

取得指定进程的调度策略

sched_rr_get_interval

取得按RR算法调度的实时进程的时间片长度

sched_setparam

设置进程的调度参数

sched_setscheduler

设置指定进程的调度策略和参数

sched_yield

进程主动让出处理器,并将自己等候调度队列队尾

vfork

创建一个子进程,以供执行新程序,常与execve等同时使用

wait

等待子进程终止

wait3

参见wait

waitpid

等待指定子进程终止

wait4

参见waitpid

capget

获取进程权限

capset

设置进程权限

getsid

获取会晤标识号

setsid

设置会晤标识号

 

二、文件系统控制
1、文件读写操作

fcntl

文件控制

open

打开文件

creat

创建新文件

close

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值