Linux系统基础
文章平均质量分 76
Eleanor_gao
这个作者很懒,什么都没留下…
展开
-
Linux C——shell基础入门
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、v原创 2016-12-18 16:18:20 · 559 阅读 · 0 评论 -
Linux C——多线程的同步和互斥
一、互斥锁的定义,初始化,互斥操作的实现机制?1.互斥锁的定义互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。从本质上讲,互斥量是一把锁,该锁保护一个或者一些资源。一个线程如果需要访问该资源,必须要获得互斥量对其加锁。这时,如果其他线程想访问该资源也必须要获得该互斥量,但是锁已经加锁,所以这些进程只能阻塞,直到获得该锁的进程解锁。这时阻塞的线程里面有一个线程获得原创 2016-11-01 18:16:15 · 573 阅读 · 0 评论 -
Linux C——数据库函数
1.打开数据库int sqlite3_open(const char* fileName, sqlite3** ppDB);函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行。输入参数:fileName,待打开的数据库文件名称,包括路径,以’\0’结尾; 特别说明:SQLite 支持内存数据库,内存方式原创 2016-11-16 22:56:04 · 565 阅读 · 0 评论 -
Linux C——TCP并发服务器客户端(线程实现)
服务器程序代码:#include #include #include #include #include #include #include #include #define portnumber 3333void * read_msg(void *arg){ int fd = *((int *)arg); int nread = 0; char buffe原创 2016-11-12 22:09:07 · 4876 阅读 · 4 评论 -
Linux C——exec函数族
1.execl函数相关函数Fork,execle,execlp,execv,execve,execvp表头文件#include 函数原型Int execl(const char *path, const char *arg, ...);函数作用Execl()用来执行参数p原创 2016-10-20 23:22:18 · 567 阅读 · 0 评论 -
Linux C——UDP通信服务器与客户端
UDP服务器代码如下:#include #include #include #include #include #include #include #include #include #include #define SERVER_PORT 8888 #define MAX_MSG_SIZE 1024 void udps_respon(int sockfd) {原创 2016-11-11 11:33:45 · 3806 阅读 · 0 评论 -
使用多线程实现生产者和消费者的机制
#include #include #include #include #include #include #include #include #define MAX_SIZE 1024sem_t sem1,sem2;char buff[MAX_SIZE];void producer(void *arg){ do { sem_wait(原创 2016-10-30 23:12:27 · 687 阅读 · 0 评论 -
Linux C——进程控制相关函数
getpid函数的作用:获取进程识别码,进程号函数的原型: pid_t getpid(void);返回值:目前进程的进程号;头文件: #include fork函数的作用:创建一个进程函数的原型:pid_t fork(void);函数的返回值: =0 表示当前创建的子进程 >0原创 2016-10-19 23:21:51 · 856 阅读 · 0 评论 -
Linux C——使用父子进程实现TCP通信
#include #include #include #include #include #include #include #include #define MY_PORT 3333int main(int argc ,char **argv){ int listen_fd,accept_fd; struct sockaddr_in clien原创 2016-11-13 22:13:58 · 898 阅读 · 0 评论 -
Linux C——select函数详解及其应用
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻转载 2016-11-14 21:37:36 · 809 阅读 · 0 评论 -
C语言——系统函数和库函数的区别
系统调用:是操作系统为用户态运行的进程和硬件设备(如CPU、磁盘、打印机等)进行交互提供的一组接口,即就是设置在应用程序和硬件设备之间的一个接口层。可以说是操作系统留给用户程序的一个接口。再来说一下,linux内核是单内核,结构紧凑,执行速度快,各个模块之间是直接调用的关系。放眼望整个linux系统,从上到下依次是用户进程->linux内核->硬件。其中系统调用接口是位于Linux内核中的,如果再原创 2016-12-10 20:41:06 · 9421 阅读 · 0 评论 -
Linux C——段错误bug的调试
转自:http://blog.chinaunix.NET/space.PHP?uid=317451&do=blog&id=92412方法一和二适用与像我一样的新手,:-)我们在用C/C++语言写程序的时侯,内存管理的绝大部分工作都是需要我们来做的。实际上,内存管理是一个比较繁琐的工作,无论你多高明,经验多丰富,难免会在此处犯些小错误,而通常这些错误又是那么的浅显而易于消除。但是转载 2016-11-25 23:06:54 · 600 阅读 · 0 评论 -
Linux C——网络编程传输文件的实验
原先对文件总是有一种莫名的抗拒,原因未知,最近做东西的时候需要用套接字传送文件、图片之类的东西,没办法,只好硬着头皮上了。做了一个小实验,下面是几点心得:(1)网上查了一些资料,发现其实套接字传送文件和传输文字没什么区别的,因为它只负责发送和接收,而对到底是什么样类型的数据是并不感冒的(以字节为单位传输)(2)发送文件时,需要先把文件以二进制格式打开,读取到内存中,然后再发转载 2016-12-07 22:19:18 · 987 阅读 · 0 评论 -
Linux C——TCP、UDP的区别和分别使用的场合
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。UDP(User Datagram Protocol) UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现原创 2016-12-06 22:30:53 · 2254 阅读 · 0 评论 -
Linux C——详解TCP协议的三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:转载 2016-12-05 22:08:05 · 410 阅读 · 0 评论 -
Linux C——IP地址分类的详解
IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、和C类这三类地址用于TCP/IP节点,其它两类D类和E类被用于特殊用途。A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。1. A类地原创 2016-12-05 22:06:42 · 1445 阅读 · 0 评论 -
Linux C——获取当前目录的方法
两种方法:1. 利用getcwd()函数取得当前工作目录(相当于windows下的GetCurrentDirectory)2. 取得实际文件目录(相当于windows下的GetModuleFileName())原理:每个进程在/proc下都有一个以进程号命名的目录。在该目录下有exe文件,该文件是一个链接文件,它指向的路径就是该进程的全路径.用readlink()读原创 2016-11-19 21:08:13 · 2843 阅读 · 0 评论 -
Linux C——常用shell脚本
1.列出所有目录使用量,并按大小排序。代码如下:ls|xargs du -h|sort -rn #不递归下级目录使用du -sh2.查看文件排除以#开关和空白行,适合查看配置文件。代码如下:egrep -v "^#|^$" filenamesed '/#.*$/d; /^ *$/d'3.删除空格和空行。代码如下:sed '/^$/d' fi原创 2016-11-18 22:44:29 · 388 阅读 · 0 评论 -
Linux C——shell编程基础入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的S原创 2016-11-18 22:37:41 · 1454 阅读 · 0 评论 -
Linux C——多线程的基本概念及API函数
一、线程和进程之间的关系,与进程相比线程有哪些优点?1.线程与进程之间的关系①线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。②一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。③"进程——资源分配的最小单位,线程——程序执行的最小单位“④原创 2016-10-29 23:40:29 · 698 阅读 · 0 评论 -
Linux C——TCP客户端服务器通信
服务器代码:#include #include #include #include #include #include #include #include #define portnumber 3333int main(int argc, char *argv[]) { int sockfd,new_fd; struct sockaddr_in原创 2016-11-10 11:08:47 · 529 阅读 · 0 评论 -
Linux C——常用校验方法
1.奇偶校验 奇偶校验是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶 校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校 验“1”的个数是否为奇数,从而确定传输代码的正确性。奇校验:所有传送的数位(原创 2016-11-05 22:40:34 · 2085 阅读 · 0 评论 -
sqlite3命令终端实现
1.如何在命令终端创建数据库,创建数据页表? 数据库文件格式:test.db创建数据库命令:sqlite> sqlite3 test.db 创建数据页表命令:sqlite> create table test (id integer primary key, value text);名为id的主键列:该列默认具备自动增长的属性;名为value的简单文本域;2.如何原创 2016-11-04 23:28:04 · 642 阅读 · 0 评论 -
Linux C——信号量通信
一、信号的分类,常用的几种信号来源?1.信号的分类可以从两个不同的分类角度对信号进行分类:①可靠性方面,可分为可靠信号与不可靠信号;②与时间关系上,可分为实时信号与非实时信号(1)可靠信号与不可靠信号不可靠信号:Linux信号机制基本上是从Unix系统中继承过来的。早期Unix系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,因此,把那些建立在早期机制上的信号叫做"不原创 2016-10-24 23:57:44 · 433 阅读 · 0 评论 -
Linux C——管道通信
一、管道1.无名管道的概念,读写端口,如何使用无名管道进行通信?(1)无名管道的概念 管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。 无名管道主要用于父进程与子进程之间,或者两个兄弟进程原创 2016-10-23 23:19:16 · 383 阅读 · 0 评论 -
Linux C——数据库的基本知识
1.数据库的基本概念和基本作用是如何?数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。2.了解数据库的发展历史和各种数据模型?发展历史:使用计算机后,随着数据处理量的增长,产生了数据管理技术。数据管理技术的发展与计算机硬原创 2016-11-03 21:52:12 · 762 阅读 · 0 评论 -
Linux C——进程学习的笔记
一、进程的创建Fork(),vfork()两个函数都可以进行进程的创建,但是却稍有不同Fork函数创建的子进程是将父进程的资源拷贝一份Vfork函数创建的子进程是与父进程共享数据空间,而不是单纯的拷贝此外,在调用vfork函数的时候,子进程必须要先退出,父进程才能继续运行 二、进程的执行1.execl函数的作用:执行一个文件,函数原型: int execl原创 2016-10-22 23:18:35 · 377 阅读 · 0 评论 -
Linux C——带IO缓冲的文件操作函数
5. fopen函数的作用:打开文件函数的原型: FILE *fopen(const char *pth, const char *mode) mode: r:读,文件必须存在; r+:打开可读写,文件必须存在; w:打开只写文件,文件不存在就会创建文件; 文件清0; w+:打开可读写的文件, a:附加的形式打开只写文件,原创 2016-10-18 20:42:11 · 967 阅读 · 0 评论 -
Linux C——API文件操作函数
1.creat 函数的作用:创建一个文件; 函数的原型: int creat(const char *pathname, mode_t mode); 文件头: #include #include #include 返回值:成功:新的文件描述符; 出错: -1 创建几个函数:原创 2016-10-17 22:54:58 · 2413 阅读 · 0 评论 -
Linux C——消息队列
一、消息队列的理论与API函数的应用1.消息队列的理论消息队列就是一个消息的链表。就是把消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读出消息。Linux采用消息队列的方式来实现消息传递。这种消息的发送方式是:发送方不必等待接收方检查它所收到的消息就可以继续工作下去,而接收方原创 2016-10-26 00:07:24 · 630 阅读 · 0 评论 -
Linux C——网络通信的相关函数
1、 socket函数的作用:建立一个新的socket套接字函数的原型:int socket(int domain,int type, int protocol)函数的参数:domian:表示使用何种地址类型 AF_INET,IPV4网络协议 AF_INET6,IPV6网络协议原创 2016-11-06 23:53:45 · 501 阅读 · 0 评论 -
Linux C——共享内存
一、共享内存实现的原理,system V实现的函数1.共享内存实现的原理系统V共享内存指的是把共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程通过共享该内存区域来获得访问权。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相应的标识符。内核在保证shmget获得或创建一个共享内存区,初始化该共享内存区相应的sh原创 2016-10-26 15:34:42 · 2810 阅读 · 1 评论 -
Linux C——poll函数实现多路复用
多路复用 多路复用一般用于I/O操作可能会被阻塞的情况,对可能会有阻塞的I/O的管道、网路进行编程。采用管道函数创建有名管道,使用select函数替代使用poll函数实现多路复用: 创建两个有名管道,获取3个文件描述符(2个管道1个标准输入),然后初始化读文件描述符,select监视文件描述符的文件读写,管道1输出到屏幕上,管道2输出到屏幕上,标准输入‘Q’来进行判读是否退出。转载 2016-10-28 21:49:02 · 2056 阅读 · 1 评论 -
Linux C——网络通信的相关函数
1.socket函数函数作用:创建一个socket函数原型:int socket(int family, int type, int protocol);参数:Family:一个地址描述。目前仅支持AF_INET格式,也就是说ARPA Internet地址格式。对于IPv4,family参数指定为AF_INETtype:新套接口的类型描述。 对于TCP协议,type参数指定原创 2016-11-09 11:03:31 · 597 阅读 · 0 评论 -
Linux C——网络编程基础知识
一、网络模型1.TCP网络模型 2.UDP网络模型 二、网络基础——套接字是一种特殊的IO接口,是一种文件描述符;是一种常用的进程之间的通信,本地,不同主机之间通信;Socket可用网络地址结构{协议,本地地址,本地端口}表示。1.套接字的类型①流式套接字SOCK_STREAM提供可靠的、面向连接的通信流,保证数据传输的可靠性和按序收发。TCP属于流原创 2016-11-08 23:20:16 · 591 阅读 · 0 评论 -
Linux C——信号量进程通信
信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源.进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步1.信号量概述信号灯与其他进程间通信方式不太相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下原创 2016-10-27 22:01:17 · 629 阅读 · 0 评论 -
Linux中的文件系统简介
1.Linux磁盘分区和目录 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tr原创 2016-09-25 22:58:46 · 311 阅读 · 0 评论 -
Linux中链接文件的命令
Linux中链接文件的命令Linux具有为一个文件其多个文件的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名文件的链接文件的修改。对于某个文件的各链接文件,可以给它们指定不同的存取权限,以控制对信息的共享和增原创 2016-09-29 19:40:51 · 1055 阅读 · 0 评论 -
Linux中的文件操作命令
1.cat命令 cat用来显示文件的内容。 1)一般格式 cat 【选项】 文件 2)说明 一是显示文件内容;二是连接两个或者多个文件。 3)常用选项 -b 从1开始对所有非空输出编号2.more 用来显示文件的内容,每次显示一屏。 1)一般格式 more 【选项】 文件 2)说明 一次显示一屏文本,满屏后停下来,并且在屏幕底部出现提示信息,给出转载 2016-09-30 22:14:08 · 287 阅读 · 0 评论 -
TCP/IP理论基础
一、TCP/IP的分层模型OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更原创 2016-11-07 22:38:49 · 1101 阅读 · 0 评论