UNIX系统编程(一)
看了《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系统编程(一)相关推荐
- UNIX系统编程(1)
注:本文来自"网易"博主,仅阅读,学习 第一章:什么是系统编程 UNIX系统编程,简单的说就是"C语言+系统调用(system call)",学会了C语言再知 ...
- 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)
文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...
- UNIX系统编程(2)
注:本文来自"网易"博主 第三章:文件系统 这回我们来说一下UNIX的文件系统.由于一般情况下UNIX机的硬盘会很大,所以一般你可以给它分成几个区,而每个分区又都可以有独立的文件系 ...
- Linux/Unix系统编程手册 第三章:系统编程概念
本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...
- UNIX系统编程小结(三)----进程相关
进程即一个程序的动态执行.引用apue上的一句话:"A thorough understanding of the UNIX System's process control is esse ...
- linux/unix系统编程手册11-15
title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...
- Linux/UNIX系统编程手册gg
Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...
- unix系统编程小结(二)------文件和目录
一.对linux的安全机制的一点感悟 各种权限,read,write,execute,set-user-ID,set-group-ID,sticky bit,对目录的权限,对文件的权限,用于保证系统安 ...
- Unix系统编程()发送信号kill
与shell的kill命令类似,一个进程能够使用kill系统调用向另一进程发送信号. 之所以选择kill作为术语,因为早期UNIX实现中大多数信号的默认行为是终止进程. #include <si ...
最新文章
- 单点登录系统实现基于SpringBoot
- 第六章 PX4-Sensors解析
- 伪元素改变date类型input框的默认样式实例页面
- Teams Bot开发系列:Activity处理流程
- 怎样成为优秀的软件模型设计者
- 自学python-python自学难吗
- 变量类型C#面试题详解
- 第一次面试总结--中国电子科学研究院
- Jive源码分析:tree树形数据结构
- 统计某个字符串出现的次数
- easyui 提示框组件_jQuery EasyUI 教程-Tooltip(提示框)
- 网络工程师考试串讲视频教程
- idea无法下载源码 Sources not found for: org.springframework:spring-context:5.1.5.RELEAS
- 7. 文件和数据格式化
- SVM算法应用综合练习(2)--人脸微笑识别
- linux操作系下RAR的使用
- maya xgen基础头发
- 嵌套交叉验证的一致特征(Consensus features nested cross-validation)
- CentOS 7.5 编译安装redis集成至系统服务(包括集群环境)
- docker(十一):网络命名空间
热门文章
- Kali更新源 - 由于没有公钥,无法验证下列签名: NO_PUBKEY ED444FF07D8D0BF6
- c现代方法8.2节 deal.c程序自己编写
- constexpr函数
- 多线程服务器模型-one loop per thread
- c++ 9.程序流程结构
- C语言能否写windows应用程序,C语言能写windows的窗口吗?
- TCP协议连接过程详解
- 批量绑定(bulk binds):FOR循环与FORALL的性能比较
- 【经典问题】maximum subset sum of vectors
- 突破php的imagecopyresampled 和imagecopyresized 实现图片马JPG