系统编程知识总结

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.守护进程

  


      


      

       

你可能感兴趣的:(linux,系统编程)