linux编程手册读书笔记第一章(20140329)

2)管道、FIFO、套接字、设备(比如终端、伪终端)都支持非阻塞模式。(因为无法通过open()来获取管道和套接字的文件描述符。所以要启用非阻塞标志,就必须使用fcntl()的F_SETFL命令)

3)指定O_EXCL 标志调用open(),这确保了调用者就是文件的创建者

4)指定O_APPEND标志调用open(),这确保了多个进程在对同一文件追加数据时不会覆盖彼此的输出

5fcntl()可以执行许多文件控制操作,其中包括:修改打开文件的状态标志、复制文件描述符

6dup()和dup2()系统调用也能实现文件描述符的复制功能。

7UNIX历史:

        AT&T发布了UNIX的第一版到第六版,没有新的衍生分支系统。但已经包括了许多沿用至今程序的雏形:arcatchmodchowncpdcedfindlnls 

        mailmkdirmvrmshsuwho

        AT&T发布了UNIX的第七版,携带了新的工具软件:awkmakesedtaruucpBourne shellFORTRAN 77编译器。第七版分裂出两大分支:BSDSystem V


        BSD:伯克利软件发布,Berkeley Software Distribution       包含新特性:C shellvi编辑器、伯克利快速文件系统、sendmailPascal语言编译器,以及新型

        Digtial VAX架构的虚拟内存管理机制。 19834.2BSD包含了完整的TCPIP实现,其中包括套接字API以及各种网络工具。1993年最终发布版本4.4BSD

        1994年经过与USLUNIX System Laboratories 派生自AT&T的子公司,目前被Novell收购)的庭外和解,修正版权后发布了4.4BSDLite


        SVR4 : 1982AT&T解体,AT&TUNIX支撑团队(UNIX Support Group--USG)于1989年发布System V Release4SVR4),纳入了BSD的诸多特性,

                 包含联网能力。

       

       商业性质的UNIX实现在各种硬件架构的应用:SUNSunOSSolarisHP Tru64 UNIXIBM AIX HPUXNeXTStepApple MacintoshAUX

       MicrosoftSCO联合为Intel x86-32架构开发的XENIX


       基于4.3BSB,将BSD移植到32位的X86 cpu上,命名为386/bsd;基于386/bsd衍生出NetBSDFreeBSD

       NetBSD侧重于对于大量硬件平台的可移植性;FreeBSD关注性能

       OpenBSDNetBSD分离出来,偏重于安全性

8UNIX标准:

        SUSSingle UNIX Specification

        POSIX标准:可移植操作系统Portable Operating System Interface,提升应用程序在源码级别的可移植性

        POSIX.1标准:操作系统应向程序提供调用各项服务的API

                            该标准基于UNIX系统调用和C语言库函数,但无需与任何特殊实现相关。这意味着任何操作系统都可以实现该接口,而不一定要是UNIX操作系统。

        POSIX.2标准:对Shell和包括C编译器命令行接口在内的各种UNIX工具进行了标准化。


        X/Open公司:多家国际计算机厂商所组成的联盟,致力于采纳和改进现有标准。

                           1994年发布的指导丛书---XPG4版本2

                           1993NovellUNIX的商标权转让给了X/Open,然后发布了重新包装指导丛书--SUSv1或称为UNIX95

                           1997年发布SUSv2规范(有时称为XPG5),经过该认证的UNIX称为UNIX98

       SUSv3标准 : 取代了SUSv2 POSIX.2;经过该认证的UNIX称为UNIX03

       

       XSI规范:X/Open系统接口,要想完全符合XSI规范,除了满足POSIX所有规定外,还要提供若干POSIX规范中的可选接口和行为,这样才可获得UNIX03称号


       XSI扩展:将XSI规范符合度达标所需的额外接口和行为统称为XSI扩展。这些扩展支持以下特性:线程、mmap()、munmap()、dlopen API、资源限制、

                     伪终端、System V IPCsyslog APIpoll()以及登录记账。

      

       SUSv4标准:废止了SUSv3中的某些函数,这包括asctime()、ctime()、ftw()、gettimeofday()、getitimer()、setitimer()、siginterrupt()

                         删除了SUSv3标记为作废的函数:gethostbyname()、gethostbyaddr()、vfork()


9Linux历史(内核0.0.2发布于1991年):

        GNUGNU’s not UNIX

        FSF:自由软件基金会

        GNU GPL:通用公共许可协议

        GNU项目成果:Emacs文本编辑器、GCCbash shellglibc;但没有系统内核

        Linux:只是指由Linus Torvalds和其他人所开发出的内核;该内核外加一大堆其他软件(工具和库)构成完整操作系统

        LSBLinux Standard Base  Linux标准规范

                遵循各种UNIX标准,尤其时符合POSIXSUS规范,是Linux(即内核、glibc以及工具)开发的总体目标。

        

        LSB推广的二进制可移植性(编译过的程序),只要硬件平台不一,便无法实现。          

        POSIX推广的是源码可移植性,指以C语言编写的程序可以在任何符合POSIX规范的系统上编译并运行。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序(基本概念及分类,直接插入排序和希尔排序)

排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序&a…

Linux编程手册读书笔记第二章(20140330)

内核:管理和分配计算机资源(即CPU、RAM和设备)的核心软件层Linux内核可执行文件采用/boot/vmlinuz或类似的路径名,“z”表明内核是经过压缩的可执行文件。内核主要任务: (1&#xff…

直接交换排序

直接交换排序 缺点:进行一些重复性比较,解决放法:堆排序 选择排序优化 //如果当前的数大于假定最大的数 //改变下标 //如果当前的数小于假定最小的数 //改变下标 //遍历数组跳到下一个元素 //如果最大的数没有在它的位置上 //交换 //交换…

Linux编程手册读书笔记第三章(20140407)

外壳函数执行一条中断机器指令(int 0x80),引发处理器从用户态切换到核心态,并执行系统中断0x80的中断矢量所指向的代码。(在2.6内核及glib 2.3.2之后的版本都支持sysenter指令,进入内核的速度更快&#xff…

Linux编程手册读书笔记第四章(20140407)

标准文件描述符定义在<unistd.h>中&#xff0c;STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO打开一个文件&#xff1a;open&#xff08;&#xff09; &#xff03;include<sys/stat.h> #include<fcntl.h> int open(const char *pathname, int flags, …/* …

快速排序概念及实现

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c; 其基本思想为&#xff1a; 任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列…

Linux编程手册读书笔记第五章(20140408)

改变已打开文件性质&#xff1a;fcntl&#xff08;&#xff09; #include<fcntl.h> int fcntl(int fd, int cmd, …); (1) 调用失败返回&#xff0d;1 &#xff08;2&#xff09;fcntl函数有5种功能&#xff1a; a. 复制一个现有的描述符&#xff08;cmd&#xff1d;F_D…

归并排序概念及其实现

基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个…

##连接符和#符的使用

C语言中如何使用宏C&#xff08;和C&#xff09;中的宏&#xff08;Macro&#xff09;属于编译器预处理的范畴&#xff0c;属于编译期概念&#xff08;而非运行期概念&#xff09;。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中&#xff0c;#的功能是将其…

计数排序和基数排序

适用于数据集中在某个范围中&#xff0c; //统计每个数据出现的次数 计数排序&#xff1a;鸽巢原理 1找范围 2给空间 3记次数 4回收 for(int i 0;i<size; i) {temp[array[i]]; }for(int i0;i<range;i&#xff09;{while(temp[i])array[index]i;}代码实现 时间复杂度&…

信号量sem_wait()的使用

闲来无事&#xff0c;我给大家讲下UNIX/Linux下信号量函数的使用。首先你得知道什么叫信号量&#xff0c;什么时候要用信号量。这个嘛&#xff0c;主要就是用来保护共享资源的&#xff0c;也就是说如果你想限制某个&#xff08;些&#xff09;资源在同一时刻只能有一&#xff0…

C++起始(关键字,命名空间,缺省参数,函数重载(c语言为什么不支持函数重载))

1. C关键字(C98) 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用 域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污…

va_list和vsnprintf、getopt

原理解释&#xff1a; VA_LIST 是在C语言中解决变参问题的一组宏&#xff0c;在<stdarg.h>头文件下。 VA_LIST的用法&#xff1a; &#xff08;1&#xff09;首先在函数里定义一具VA_LIST型的变量&#xff0c;这个变量是指向参数的指针 &#xff08;2&a…

GitHub相关

git是一个版本控制工具. 主要解决三个问题 代码被喵星人吃掉了.产品经理反复修改需求, 需要同时维护多个版本代码.多人协同开发. 安装 git for windows 这个是一个git的windows系统的命令行版本 https://git-scm.com/downloads 下载会很慢很慢 使用 Github 创建项目 注册…

linux中bin与sbin目录的作用及区别介绍

在linux系统中&#xff0c;有两个重要的目录&#xff1a;bin与sbin&#xff0c;分别包括/bin、/usr/bin/与/sbin、/usr/sbin/。 bin: bin为binary的简写&#xff0c;主要放置系统的必备执行文件&#xff0c;例如: cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、m…

c++起始(名词修饰,extern “C” ,引用)

名字修饰(name Mangling) 在C/C中&#xff0c;一个程序要运行起来&#xff0c;需要经历以下几个阶段&#xff1a;预处理、编译、汇编、链接。 Name Mangling是一种在编译过程中&#xff0c;将函数、变量的名称重新改编的机制&#xff0c;简单来说就是编译器为了区分各 个函数…

Linux进程间通信方式--本地socket

先上一个代码 服务端&#xff1a; [cpp] view plaincopy //s_unix.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #define UNIX_DOMAIN "/tmp/UNIX.domain" int main(void) { so…

extern和static的区别

c语言中的 static&#xff1a; 修饰局部变量&#xff1a;存放在静态数据区&#xff0c;生命周期位整个程序结束&#xff0c;但作用于仍为函数局部。 修饰全局变量&#xff1a;无法被同一工程其他源文件访问。 修饰函数&#xff1a;与全局变量类似。 extern&#xff1a; 可被…

RT5350原厂SDK及AP移植步骤详解

最近想搞一下rt5350&#xff0c;所以找了个原厂的SDK包进行了编译&#xff0c;很快路由器就可以用了&#xff0c;把我的编译操作步骤写了下分享给更多的爱好者&#xff0c;供大家参靠&#xff0c;下一步准备移植摄像头玩玩。有兴趣的可以一起交流。 RT5350移植Toolchain工具的安…

linux系统编程之进程概念(操作系统---管理,进程创建,进程状态,进程优先级, 环境变量,程序地址空间,进程O(1)调度方法)

系统编程&#xff1a; 进程概念->进程控制->基础IO->进程间通信->进程信号->多线程进程概念 冯诺依曼体系结构----现代计算机硬件体系结构 冯诺依曼体系结构----现代计算机硬件体系结构 计算机五大硬件单元&#xff1a;输入设备&#xff1a;键盘输出设备&#…