Linux
文章平均质量分 82
xinianbuxiu
这个作者很懒,什么都没留下…
展开
-
Linux主机规划
1、装Linux的硬件需求大致如下:一、CPU(处理器):Pentun-166以上等级;二、RAM(内存):至少32MB以上。三、Hard disk(硬盘):2GB以上。四、VGA(显卡):S3早期显卡。五、Network Card(网卡):使用Intel或3Com网卡。以上只适用于规模很小的主机系统,企业内部的Linux主机则需要:一、CPU等级至少需要P-III50原创 2016-09-17 23:10:43 · 586 阅读 · 0 评论 -
Linux进程与线程的区别
Linux是一个多用户、多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。在操作系统设计上,从进程(Process)演化出线程(Thread),最主要的目的就是更好地支持多处理器,并且减小(进程/线程)上下文切换的开销.根据操作系统的定义,进程是系统资源管理的最小单位,线程是程序执行的最小单位.转载 2016-10-19 23:56:07 · 414 阅读 · 0 评论 -
线程的同步与互斥
进行多线程编程,因为无法知道哪个线程会在哪个时候对共享资源进行操作,因此让如何保护共享资源变得复杂,通过下面这些技术的使用,可以解决线程之间对资源的竞争:1. 互斥量Mutex2. 信号灯Semaphore3. 条件变量Conditionsmutex互斥锁线程控制1、互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。2、互斥锁只有两种状态,也就是上锁和解锁,可以把原创 2016-10-31 01:51:20 · 508 阅读 · 0 评论 -
TCP/IP协议及UDP协议
在Linux网络编程中,往往会用到TCP/IP的分层模型。OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模原创 2016-11-11 20:23:53 · 1163 阅读 · 0 评论 -
数据库SQL及其终端命令
数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。数据库技术主要研究如何存储、使用和管理数据;(1)所谓有结构的,指的是数据是按一定的模型组织起来的。数据模型可用数据结构来描述。数据模型决定数据的组织方式、操作方法。现在的数据库多数是以关系模型来组织数据的。可以简单地把关系模型的数据结构-关系理解成为一张原创 2016-10-31 21:13:02 · 2273 阅读 · 0 评论 -
Linux网络编程模型
模型示意图如下所示:其中,Socket是一个网络接口,不同的协议之间的差异性操作,则交给socket自行解决。TCP编程模型如下所示:UDP编程模型如下:其中网络的基础为套接字:它是一种特殊的IO接口,是一种文件描述符;也是一种常用的进程之间的通信,本地,不同主机之间通信;Socket可用网络地址结构{协议,本地地址,本地端口}表示。套接字类型有以下几类:1.流式套原创 2016-11-12 23:59:43 · 518 阅读 · 0 评论 -
socket 套接字编程
一、socket含义:Linux中的网络编程通过Socket(套接字)接口实现,Socket是一种文件描述符。套接字socket有三种类型:1、流式套接字(SOCK_STREAM)流式的套接字可以提供可靠的、面向连 接的通讯流。它使用了TCP协议。TCP保证了数据传输的正确性和顺序性。2、数据报套接字(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数原创 2016-11-13 19:15:32 · 800 阅读 · 0 评论 -
Sqlite常用函数
1、打开数据库:说明:打开一个数据库,文件名不一定要存在,如果此文件不存在,sqlite会自动创建。第一个参数指文件名,第二个参数则是定义的 sqlite3 ** 结构体指针(关键数据结构),这个结构底层细节如何,您不用管它。int sqlite3_open(原创 2016-11-02 00:53:06 · 1197 阅读 · 0 评论 -
循环服务器,并发服务器模型以及I/O多路转接模型
一、基于TCP/IP协议的基本循环服务器tcp_server.c#include #include #include #include #include #include #include #define PORT 3333#define MAX_SIZE 1024int main(){ int sockfd; int new_fd; s原创 2016-12-04 19:56:47 · 1209 阅读 · 0 评论 -
make 与makefile的作用
在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,存在很多个模块,那么手工编译的方法就不适用了。为此,在Linux系统中,专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点在于他只更新修改过的文件转载 2016-12-26 11:07:38 · 2042 阅读 · 0 评论 -
Linux多线程编程
什么是进程?进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响原创 2016-10-29 23:55:13 · 246 阅读 · 0 评论 -
Linux编程中fork()函数返回两次的探究
fork是最难理解的概念之一:它执行一次却返回两个值。 首先我们来看下fork函数的原型: #include #include pid_t fork(void); 返回值: 负数:如果出错,则fork()返回-1,此时没有创建新的进程。最初的进程仍然运行。 零:在子进程中,fork()返回0 正数:在负进程中,fork()返回正的子进程的PID原创 2016-10-25 23:38:12 · 1019 阅读 · 0 评论 -
Linux进程间通信---信号灯
信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了原创 2016-10-28 20:34:59 · 918 阅读 · 0 评论 -
exec函数族中的函数总结
1、execl(执行文件)头文件:#include定义函数:int execl(const char *path,const char *arg,….);函数说明:execl()是用来执行参数path字符串所代表的文件路径,接下来的参数代表执行该文件时传递过去的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。返回值:如果执行成功则函数不会返回,执行失原创 2016-10-21 00:00:42 · 628 阅读 · 0 评论 -
管道与信号
一、管道的概念管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。1、无名管道pipe函数原型:int pipe(int filedis[2]);函数参数原创 2016-10-22 23:51:34 · 1661 阅读 · 0 评论 -
交叉编译器arm-linux-gcc
(一)交叉编译器简介 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成另一个平台上的可执行代码.(二)体系结构与操作系统(1)常见的体系结构有ARM结构、x86结构等.(2)常见的操作系统有Linux,windows等.(3)同一个体系结构可以运行不同操作系统,如x86上可以运行Linux转载 2016-10-13 23:27:59 · 535 阅读 · 0 评论 -
文件锁
在Linux中,实现文件上锁的函数有lockf() 和fcntl() ,其中lockf()用于对文件施加建议性锁,而fcntl() 不仅可以施加建议性锁,而且可以施加强制性锁。fcntl()还能对文件的某一记录上锁,也就是记录锁。记录锁又可分读取锁(共享锁)和写入锁(排斥锁),文件的同一部分不能同时建立读取锁和写入锁。#include #include #include #原创 2016-10-24 23:47:11 · 443 阅读 · 0 评论 -
实现文件的读写操作举例
手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中出去begin,end 对应数据相加,三个文本内容如下:text1.txt:begin 10 11 12 20 21 22 30 31 32 endtext2.txt:begin 15 16 17 25 26 27 35 36 37 end原创 2016-10-16 23:54:13 · 470 阅读 · 0 评论 -
Linux进程间通信方式——管道详解
管道可分为无名管道(Pipe)及有名管道(FIFO):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。管道具有以下特点:(1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。(2)只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。(3)单独构成一个独立的文件系统。原创 2016-10-26 23:26:58 · 437 阅读 · 0 评论 -
Linux文件操作
一、系统调用在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。简言之,如下图所示: 二、用户编程接口(API)系统调用并不是直接与程序员进行交互的,原创 2016-10-17 22:16:22 · 564 阅读 · 0 评论 -
linux进程间通信——消息队列
消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数: key:可以认为是一个端口号原创 2016-10-27 23:17:39 · 339 阅读 · 0 评论 -
Linux多进程
一、进程1.定义:进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;2、进程与程序的区别:(1)程序是放到磁盘的可执行文件 ;进程是指程序执行的实例;(2)进程是动态的,程序使静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制(3)进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序原创 2016-10-18 21:59:13 · 984 阅读 · 0 评论 -
进程间通信方式有哪些?各自有哪些优缺点?
1)管道管道分为有名管道和无名管道无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。有名管道也是一种半双工的通信方式,但是它允许无亲原创 2017-01-15 16:18:23 · 10922 阅读 · 0 评论