看了《Linux程序设计》100来页,不得不吐槽一下翻译,实在没办法,在豆瓣上找到这本书《Unix/Linux编程实践教程》,翻了那么几十页,就爱上了这本书了。

下面是一些概念性的东东:

1.计算机用操作系统来管理所有的资源,并将不同的设备和不同的程序连接起来。

2.内存空间用来存放程序和数据,所有的程序都必须在内存空间中才能运行,用来容纳操作系统的内存空间叫系统空间,容纳应用程序的叫做用户空间。

3.内核(亦即OS),向程序提供服务以便程序能访问到设备。

4.系统资源

  • 处理器
  • I/O
  • 进程管理(process management):指程序的一次运行,每个进程都有自己的资源,如内存,打开的文件和其他运行时所需的系统资源。
  • memory
  • device
  • timers
  • interprocess communication
  • networking

5.在登录过程中,当用户名和密码通过验证后,系统会启动一个叫shell的进程,然后把用户交给这个进程,由这个进程处理用户的请求。

6.网络桥牌展示了UNIX系统的编程中3个重要的方面:

  • 通信:某个用户或进程如何与其他用户和进程交换信息?
  • 协作:在同一个时刻,网络桥牌的两个用户不会去拿同一张牌,程序如何来协调多个process来使他们没冲突地访问共享资源?
  • 网络访问:计算机的程序如何使用网络?

7.命令也是程序

在UNIX上面添加新的命令很容易。把程序的可执行文件放到以下任意一个目录即可:/bin、/usr/bin、/usr/local/bin,这些目录存在很多系统命令,UNIX一开始没那么多命令,一些人编写特定的程序来解决某个特定问题。而其他人也觉得这程序有用,用得多了后,就成了标准命令了。

8.从UNIX中学习UNIX:

  • 阅读联机帮助(如:$man who)
  • 搜索联机帮助(如:$man –k utmp)
  • 阅读.h文件
  • 从参阅部分得到启示(SEE ALSO)

9.系统调用之OPEN、READ

1)open:在进程process和文件file之间建立一条连接,这个连接被称为文件描述符file descriptor,就像条由进程通向内核的管道。(大方框下面的阴影是kernel,最下面的阴影圆柱是硬盘)

文件描述符:如果文件被顺利打开,内核会返回一个正整数的值,此即文件描述符。打开文件会建立文件和进程之间的连接,文件描述符就是唯一标识这个连接的,若同时打开好几个文件,他们所对应的文件描述符是不同,如果将一个文件打开多次,对应的文件描述符也不同。

                                                  system    call:           open
目标                                打开一个文件
头文件                            #include<fcntl.h>
函数原型                        int fd = open (char *name, int how)
参数                                name:文件名                          how :O_RDONLY,O_WRONLY或O_RDWR
返回值                            -1 错误                                    int 成功返回

2)read

在unistd.h头文件中,原型为:ssize_t numread = read (int fd, void *buf, size_t qty)。其中fd为文件描述符,buf为用来存放数据的目的缓冲区,qty为要读的字节数。

返回:-1,错误;numread,成功读取。

转载于:https://www.cnblogs.com/frechei/archive/2013/04/11/3015675.html

UNIX系统编程(一)相关推荐

  1. UNIX系统编程(1)

    注:本文来自"网易"博主,仅阅读,学习 第一章:什么是系统编程  UNIX系统编程,简单的说就是"C语言+系统调用(system call)",学会了C语言再知 ...

  2. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  3. UNIX系统编程(2)

    注:本文来自"网易"博主 第三章:文件系统 这回我们来说一下UNIX的文件系统.由于一般情况下UNIX机的硬盘会很大,所以一般你可以给它分成几个区,而每个分区又都可以有独立的文件系 ...

  4. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  5. UNIX系统编程小结(三)----进程相关

    进程即一个程序的动态执行.引用apue上的一句话:"A thorough understanding of the UNIX System's process control is esse ...

  6. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  7. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  8. unix系统编程小结(二)------文件和目录

    一.对linux的安全机制的一点感悟 各种权限,read,write,execute,set-user-ID,set-group-ID,sticky bit,对目录的权限,对文件的权限,用于保证系统安 ...

  9. Unix系统编程()发送信号kill

    与shell的kill命令类似,一个进程能够使用kill系统调用向另一进程发送信号. 之所以选择kill作为术语,因为早期UNIX实现中大多数信号的默认行为是终止进程. #include <si ...

最新文章

  1. 单点登录系统实现基于SpringBoot
  2. 第六章 PX4-Sensors解析
  3. 伪元素改变date类型input框的默认样式实例页面
  4. Teams Bot开发系列:Activity处理流程
  5. 怎样成为优秀的软件模型设计者
  6. 自学python-python自学难吗
  7. 变量类型C#面试题详解
  8. 第一次面试总结--中国电子科学研究院
  9. Jive源码分析:tree树形数据结构
  10. 统计某个字符串出现的次数
  11. easyui 提示框组件_jQuery EasyUI 教程-Tooltip(提示框)
  12. 网络工程师考试串讲视频教程
  13. idea无法下载源码 Sources not found for: org.springframework:spring-context:5.1.5.RELEAS
  14. 7. 文件和数据格式化
  15. SVM算法应用综合练习(2)--人脸微笑识别
  16. linux操作系下RAR的使用
  17. maya xgen基础头发
  18. 嵌套交叉验证的一致特征(Consensus features nested cross-validation)
  19. CentOS 7.5 编译安装redis集成至系统服务(包括集群环境)
  20. docker(十一):网络命名空间

热门文章

  1. Kali更新源 - 由于没有公钥,无法验证下列签名: NO_PUBKEY ED444FF07D8D0BF6
  2. c现代方法8.2节 deal.c程序自己编写
  3. constexpr函数
  4. 多线程服务器模型-one loop per thread
  5. c++ 9.程序流程结构
  6. C语言能否写windows应用程序,C语言能写windows的窗口吗?
  7. TCP协议连接过程详解
  8. 批量绑定(bulk binds):FOR循环与FORALL的性能比较
  9. 【经典问题】maximum subset sum of vectors
  10. 突破php的imagecopyresampled 和imagecopyresized 实现图片马JPG