linux程序设计——个人总结
linux程序设计——个人总结
到今天为止,《linux程序设计》学习基本完毕了。从五月下旬開始接触linux,学习安装Ubuntu14.04,六月份開始学习《linux程序设计》,实习考试之余花费了足足快两个月的时间,看完大部分章节。敲了一些代码。文章都在这里--linux程序设计。
细致看过的章节:第一章入门、第二章shell程序设计、第三章文件操作、第四章linux环境、第七章数据管理、第八章MySQL、第九章开发工具、第十一章进程和信号量、第十二章POSIX线程、第十三章进程间通信:管道、第十四章信号量共享内存消息队列、第十五章套接字。
没有细看的章节:第五章终端、第六章屏幕控制(curses)、第十章调试、第十六章X视窗、第十七章用Qt进行KDE编程、第十八章linux标准。
在看第一章第二章的时候,同一时候学习了《linux入门基础》的视频,在这里--linux入门基础。
第三章第四章看的有点枯燥。有些函数仅仅是给出了函数原型(比方有些系统调用函数)。后面的章节还是经经常使用到的。
第七章数据管理介绍动态内存管理和文件锁定(文件锁,区域锁定,死锁)。
第八章MySQL的一些基本的语法之前就有看过。主要新学习了如何使用C语言连接MySQL数据库訪问MySQL数据。
第九章开发工具主要了解多文件编译和makefile语法。
七月份主要就是学习进程信号量套接字这些新内容,还挺有意思的。
第十一章进程和信号量中fork函数复制父进程,exec替换进程,结合在一起就可创建新进程所需的一切。
第十二章POSIX线程中子线程共享父线程的全局变量,文件描写叙述符等。
还介绍了相互排斥量和多线程。
第十三章管道中介绍父进程和子进程的通信,父进程向管道中写入数据,子进程从管道中读取数据(由于创建新进程时,原先打开的文件描写叙述符扔将保持打开状态。
第十四章信号量共享内存消息队列中介绍信号量PV操作,P(-1)挂起进程,V(+1)释放进程,共享内存把不同进程之间共享的内存安排为同一段物理内存,这样能够在不同进程之间传递数据。消息队列独立于发送和接收进程而存在,创建消息队列、加入消息到消息队列、从消息队列获取消息、控制消息队列完毕进程间的通信。
第十五章套接字用于在计算机网络中的通信,套接字有点类似于管道,但套接字明白地将客户和server区分开。
套接字通信的原理:
基于套接字系统的服务端:
首先server程序使用socket创建一个套接字(类似于文件描写叙述符)
然后使用bind给套接字命名。可是在命名之前必须给出套接字的标识符(这个标识符同意linux将进入的针对特定port号的连接转到正确的server进程,标识符是一个用于特定服务的port号)
然后server进程就開始等待客户连接到这个命名套接字。
listen的作用是创建一个监听队列并将用于存放来自客户的进入连接。
accept的作用是server接收客户的连接。
server调用accept时,它会创建一个与原有的命名套接字不同的新套接字。
这个新套接字仅仅用于与这个特定的客户进行通信。而命名套接字则被保留下来继续处理来自其它客户的连接。兴许的客户将在监听队列中等待,直到server再次准备就绪。
基于套接字系统的client:
首先客户程序使用socket创建一个未命名套接字
然后将server的命名套接字作为一个地址来调用connect与server建立连接。
一旦连接成功。就能够像使用底层的文件描写叙述符那样用套接字实现双向的数据通信。
linux程序设计——个人总结的更多相关文章
- Linux程序设计(一)入门
1. linux程序 Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件. 可执行文件:是计算可以直接运行的程序,相当于windows的.exe文件. 脚本文件:一组指令的集合.这些指令 ...
- Linux 程序设计的一些优化措施
Linux 程序设计的一些优化措施 这些知识是在平常的阅读中,零散的获得的,自己总结了一下,分享在这里 全局变量VS函数参数 全局变量在Linux下的驱动编程里边,用的是非常多,例如中断服务函数ISR ...
- Linux程序设计之shell程序设计
看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...
- Linux程序设计:进程通信
日期:忘了. 关键词:Linux程序设计:System-V:进程通信:共享内存:消息队列. 一.共享内存 1.1 基本知识 (待补充) 1.2 代码 一个基于share memory实现的 ...
- 5)Linux程序设计入门--信号处理
)Linux程序设计入门--信号处理 Linux下的信号事件 前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 信号的产生 信号的处理 其它信号函数 一个实例 .信号 ...
- 6)Linux程序设计入门--消息管理
)Linux程序设计入门--消息管理 前言:Linux下的进程通信(IPC) Linux下的进程通信(IPC) POSIX无名信号量 System V信号量 System V消息队列 System V ...
- 2)Linux程序设计入门--进程介绍
)Linux程序设计入门--进程介绍 Linux下进程的创建 前言: 这篇文章是用来介绍在Linux下和进程相关的各个概念.我们将会学到: 进程的概念 进程的身份 进程的创建 守护进程的创建 .进程的 ...
- 3)Linux程序设计入门--文件操作
)Linux程序设计入门--文件操作 Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 .文件的创建和读 ...
- 1)Linux程序设计入门--基础知识
)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...
- 8)Linux程序设计入门--线程操作
)Linux程序设计入门--线程操作 前言:Linux下线程的创建 介绍在Linux下线程的创建和基本的使用. Linux下的线程是一个非常复杂的问题,由 于我对线程的学习不时很好,我在这里只是简单的 ...
随机推荐
- 3.is null和is not null
3.WHERE中使用is null和is not null //查询工资是null空值的人 select * from person where salary is null; //查询工 ...
- java--web学习总结<转>
http://www.cnblogs.com/xdp-gacl/p/3729033.html
- (转)彻底学会使用epoll(一)——ET模式实现分析
注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识.是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧 ...
- 洛谷 P2111 考场奇遇
P2111 考场奇遇 题目背景 本市的某神校里有一个学霸,他的名字叫小明(为了保护主人公的隐私,他的名字都用“小明”代替).在这次的期中考试中,小明同学走桃花运,在考场上认识了一位女生,她的名字叫小红 ...
- HDU 4165
一块药看成括号配对就行了.很明显的直接求卡特兰数. 今晚看了HDU 3240的题,有一点思路,但无情的TLE.想不到什么好方法了,看了别人的解答,哇...简直是天才的做法啊....留到星期六自己思考一 ...
- webstorm卡顿问题处理
webstorm卡顿问题处理 学习了:http://blog.csdn.net/qq673318522/article/details/50583831 找到WebStorm.exe.vmoption ...
- JAVA学习之 异常处理机制
今天就来说说java的异常处理机制,异常处理不是第一接触,尤其是写过非常多c#的代码,基本都会写到异常处理的代码,事实上c#的异常处理与java的异常处理基本都是一样的,仅仅是在一些细节上不是非常一样 ...
- Edison Chou
.NET中那些所谓的新语法之中的一个:自己主动属性.隐式类型.命名參数与自己主动初始化器 开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法.它们相对曾经的老语法相比.做了非常多的改进, ...
- Docker 命令行和后台參数
Docker官方为了让用户高速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的用法. Docker 命令行 以下对Docker的命令清单进行简单的介绍,具体内容在兴许章节具 ...
- 带输出參数的存储过程的定义,以及在aso.net中调用
ALTER proc [dbo].[mp_w_RechargePortalPayPal_All] ( @PayPalOrderNo nvarchar(50), --订单号 @nAccountIDFro ...