unix环境高级编程基础知识之第一篇
陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张。
从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共识。基本熟悉了shell的介绍,主流的是bash(Bourne-again shell),unix的文件的基本操作,出错处理,用户ID,信号(感觉类似windows的消息),时间值,最后还有系统调用和库函数的区别。
看到园友整理过,这里共享一下,不再另敲:
1. 创建新目录时会自动创建两个文件名 . 和 .. ; .指当前目录, ..指父目录,目录的起点是跟root,名字为一个字符/
2. 所有Linux系统都提供GNU shell ,即Bourne-again shell遵循POSIX标准并与Bourne shell兼容,/bin/sh将链接到/bin/bash
3. 列出一个目录中所有文件的名字 ls , ll, getuid getgid返回用户ID和组Id
4. 当前目录为工作目录,登录时起始为/home/hubo
5. 每当运行一个新程序时,所有的shell都为其打开三个文件描述符:标准输入,标准输出,错误输出
如果运行 ll > file.list 会打开该文件,返回一个文件描述符
6. 函数open 、 read、write、lseek以及close提供不用缓冲的I/O,这些函数都使用文件描述符,而标准I/O函数提供带缓冲的接口如printf, fgets函数读取完整的行,而read函数读指定字节数。
7. 程序是存放在磁盘上,处于某个目录中的一个可执行文件,使用6个exec函数中一个由内核将程序读入内存,使其执行。 程序的执行示例是进程,唯一数字标识符,进行ID(process ID)总是一非负整数。getpid()得到进程ID 三个用于进程控制的函数fork、exec、waitpid
8. 在一个进程内所有线程共享同一地址空间,文件描述符,栈已经进程属性。因为它们能访问同一存储区,所以各线程在访问共享数据时需要采用同步措施避免不一致,在一个进程中对多个线程操作,用线程ID引用相应线程。线程模型,控制线程的函数。
9. 信号signal 是通知进程已发生某种情况,进程如何处理信号,可以提供一个函数,信号发生时调用该函数。 用signal函数指定当产生SIGINT信号时要调用的函数名sig_int
10. 文件I/O,open、read、write、lseek、已经close 不带缓冲的io,每个read和write都调用内核的一个系统调用。只要涉及在多个进程间共享资源,原子操作概念很重要。对于内核而言,所有打开的文件都通过文件描述符引用(内核向进程返回文件描述符)Unix系统shell使用文件描述符0与进程标准输入关联,文件描述符1与进程标准输出,文件描述符2与进程错误输出。
自己把这篇的所有代码用vim的敲完了,主要前期是熟悉unix的基本命令编程,大致了解编程流程。但是这篇主要是熟悉unix的大体框架,后期每篇会对这些内容专门介绍,共勉!
unix环境高级编程基础知识之第一篇的更多相关文章
- unix环境高级编程基础知识之第二篇(3)
看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...
- unix环境高级编程基础知识之第四章
1.从当前用户转到root用户:直接输入su命令,然后输入root密码,如果之前没有设置root命令密码会登陆不成功,这里需要命令sudo passwd命令设置密码,然后按照上面输入就成:从root命 ...
- 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识
1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...
- 【转】apue《UNIX环境高级编程第三版》第一章答案详解
原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...
- Unix环境高级编程——守护进程记录总结(从基础到实现)
一.概念及其特征 守护进程是系统中生存期较长的一种进程,常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,在后台运行.守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程 ...
- Unix 环境高级编程
UNIX 环境高级编程 本书描述了UNIX系统的程序设计接口--系统调用接口和标准C库提供的很多函数. 与大多数操作系统一样,Unix为程序员运行提供了大量的服务--打开文件,读文件,启动一个新程序, ...
- 《UNIX环境高级编程》(APUE) 笔记系列
本系列笔记主要是对于 <UNIX环境高级编程>(APUE) 各章节内容 概念性的总结 ,不涉及代码解读 . 目录 : 第一章 UNIX基础知识 第二章 UNIX标准及实现 第三章 文件I/ ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- Linux PHP5.3升级PHP5.5.33 (CentOS)
由于要使用了laravel5.1,php要升级到5.5以上.具体环境是Aliyun Cent OS 7.0.由于阿里的yum源lastest只有5.4,laravel5.1必须php5.5,加了几个网 ...
- 关于tempdb的一些注意事项
由于数据库的文件的位置对于I/O性能如此重要,以至于在创建主数据文件的文职时,需要考虑tempdb性能对系统性的影响,因为它是最动态的数据库,速度还需要最快. 组成:有主数据文件和日志文件组成.从sq ...
- phpStydy配置memcache扩展
一.下载并安装memcached服务器端软件 1.下载memcached软件 32位下载地址: memcached-win32-1.4.4-14.zip(直接下载),memcached-win3 ...
- js 获取json串中的值
用js中著名的eval函数var strJSON = "{name:'json name'}";//得到的JSONvar obj = eval( "(" + s ...
- SQLServer复合查询条件(AND,OR,NOT)对NULL值的处理方法
在SQL的3值逻辑下,一个查询条件可以产生以下三种情况:TRUE,FALSE,NULL.只有那些满足WHERE子句的值是TRUE的记录才出现在结果表中. NULL值影响查询条件的结果,并且结果很微妙. ...
- Linux指令备忘
这是之前初学Linux时做下的笔记,根据现在的熟悉程度增删了一些,也是做上备份查看,希望能让有用的童鞋参考一二. //将使用到的内容输出到屏幕,仅检查语法 sh -nx scripts.sh //输出 ...
- 深入理解TCP(二)
上一篇http://www.cnblogs.com/whc-uestc/p/4715334.html中已经讲到TCP跟踪一个拥塞窗口来(cwnd)提供拥塞控制服务,通过调节cwnd值以控制发送速率.那 ...
- 将treeview控件内容导出图片
项目中有一项需求,需要将项目中的treeview控件展示的树状结构直接导成一张图片.网上方法很多,但很多都是屏幕截屏,我的解决思路是新建一个用户控件,将主窗体的Treeview的数据传给用户控件(不要 ...
- [转]Linq中使用Left Join
本文转自:http://www.cnblogs.com/xinjian/archive/2010/11/17/1879959.html use Test Create table Student( I ...
- 又是一周-AJAX(三)
hi 我又食言了,但我还是厚颜无耻的回来了... 1.AJAX(三) 三.AJAX的简单的例子 3.1 简介 完成:查询员工信息,通过输入员工编号查询员工的基本信息+新建员工的信息,包含员工姓名,编号 ...