1.Linux操作系统
多用户
2.shell
命令行解释器 使用者<——>核心
解释型而不是编译型
运行程序 fork子进程 execv函数簇替换用户指定程序 wait进程结束
3.vim 、gcc/g++(编译时默认使用动态库)、gdb、make($foreach<var>,<list>,<text>)、catgs
4.环境变量
命令echo、export、env、set
5.常用命令
6.文件(文件属性及操作文件的函数)
文件类型:普通文件(-)、目录文件(d)、管道文件(p)、设备文件(b c)、
套接字(s)、链接文件(l)
文件信息:stat()、fstat()、lstat() struct stat{};
文件访问权限及相关设置:
每个文件有9个访问权限位chomd命令、umask函数(文件模式创建屏蔽字,没有出错返回)
设置文件uid和gid 、chown
文件系统
硬链接 ln 源文件 目标文件 link();
软链接 ln -s 源文件 目标文件 symlink();
文件的时间:st_atime、st_mtime、st_ctime
7.文件I/0
文件描述符
open()、read()、write()、lseek()、close()
dup()
8.标准I/O库
标准输入、标准输出、标准错误
缓冲
9.进程环境
main()函数
命令行参数
进程终止
环境表和环境变量
C语言的存储空间布局
10.进程控制
pid_t getpid(void);
进程的概念:一个正在运行的程序,它基本的两个元素是程序代码和程序相关联的数据集
PCB:Linux中叫task_struct,保存了该进程的相关信息,可理解为进程属性的集合
进程标识符:每个进程都用一个唯一的非负整型表示
ppid、uid、gid、euid、egid,可用对应的函数获得
更改用户ID和组ID:setuid() setgid()
进程的状态:R S D(磁盘休眠状态) T t Z X
优先级:ps -l命令 PRI这一列的值越小该进程越早被执行 NI代表进程的nice值 PRI(new)=PRI(old)+nice
进程创建:fork(),vfork() 僵尸进程、孤儿进程
进程等待:wait(),waitpid()
进程程序替换:exec()
进程终止:8种
5:从main函数中return、任一线程中exit()、调用_eixt()或_Exit()、从最后一个线程中 返回、最后一个线程调用pthread_exit
3:调用abort函数、最后一个线程对取消请求做出响应、收到终止信号
11.进程间关系
终端登陆、终端控制
进程组、会话、作业
12.信号
信号的概念:信号是通知进程发生某种情况的一种技术
信号的产生方式:三种
信号的阻塞和递达:递达、未决 信号集操作函数 更改或读取信号屏蔽字 读取pending信号集
信号的捕捉
可重入函数
回调函数
竞态条件:时序问题导致的错误
信号机制被保存在PCB中
13.线程控制
pthread_t pthread_self(void);
概念:有时候需要在一个进程中执行多个控制流
与进程的区别:线程是运行在进程中的一个执行分支,进程是资源分配的基本单位,线程调度的基本 单元,进程强调独占性,线程强调共享性
线程控制:线程创建、线程终止、线程等待
线程函数中return、pthread_exit(void*)终止自己、int pthread_cancle(pthread_t)取消统一进程 中的其它线程),如果任意一个线程调用了exit或_exit,则整个进程的所有线程都终止
线程分离:默认状态下线程被设置为可结合的,但它可以被设置为detach状态
线程同步:互斥量(可能死锁)、条件变量(典型例子生产者消费者模型)、posix信号量(基于环 形buf实现的生产者消费者模型)、读写锁
线程私有数据:
线程安全和可重入函数:
14.进程间通信
pipe 单向通信 读端写端关闭的四种情况
fifo 创建(mkfifo)
消息队列
信号量
共享内存
15.守护进程
本文出自 “零蛋蛋” 博客,请务必保留此出处http://lingdandan.blog.51cto.com/10697032/1771991
原文地址:http://lingdandan.blog.51cto.com/10697032/1771991