Linux
文章平均质量分 71
cy941228
这个作者很懒,什么都没留下…
展开
-
Linux内核_第一章
第一章Linux内核组成:进程调度、内存管理、虚拟文件系统、网络接口和进程通信五个子系统。进程调度控制系统中的多个进程对CPU的访问内存管理的主要作用是控制多个进程安全地共享主内存区域,为了了解内存管理单元MMU,需要了解TLB(块表)和TTW(转换表漫游)Linux内核五个部分的关系:1、进程调度和内存管理之间的关系:相互依赖,程序要运行必须要为其创建进程,而创建进程的第一件事情原创 2016-09-10 21:28:16 · 161 阅读 · 0 评论 -
数据库
市面上有哪些数据库?DB2OracleInformixSybaseSQL ServerPostgreSQLmySQLAccessFoxProSQLitesqlite3的特点:1.独立性:sqlite 使用标准C 语言实现,它只需要非常少的系统或外部库的支撑,这使得它非常易于移植进嵌入式设备,转载 2016-10-30 23:28:05 · 274 阅读 · 0 评论 -
Linux 基于父子进程的TCP服务器应用编程
#include #include #include #include #include #define PORTNUM 3333int main(){ int sockfd,sock_fd,ret,readbytes; char buf[512]; struct sockaddr_in my_addr,your_addr; int addrlen原创 2016-11-11 20:24:10 · 231 阅读 · 0 评论 -
Linux 数据库编程
#include #include #include void create_table(sqlite3 *db) { char *sql = "create table if not exists mytable (id integer primary key, name text)"; char *errmsg; int ret;原创 2016-11-15 22:09:29 · 181 阅读 · 0 评论 -
Linux多线程编程
线程概念 线程是指运行中的程序的调度单位。一个线程指的是进程中一个单一顺序的控制流,也被称为轻量级线程。它是系统独立调度和分配的基本单位。同一进程中的多个线程将共享该系统中的全部系统资源,比如文件描述符和信号处理等。一个进程可以有很多线程,每个线程并行执行不同的任务。线程与进程比较 ① 和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统中,启动一原创 2016-11-01 14:21:36 · 204 阅读 · 0 评论 -
网络编程
2.UDP网络模型 二、网络基础——套接字是一种特殊的IO接口,是一种文件描述符;是一种常用的进程之间的通信,本地,不同主机之间通信;Socket可用网络地址结构{协议,本地地址,本地端口}表示。1.套接字的类型①流式套接字SOCK_STREAM提供可靠的、面向连接的通信流,保证数据传输的可靠性和按序收发。TCP属于流式;转载 2016-11-12 22:03:24 · 142 阅读 · 0 评论 -
Linux C 网络编程——多线程的聊天室实现(服务器端)
服务器端的主要功能: 实现多用户群体聊天功能(此程序最多设定为10人,可进行更改),每个人所发送的消息其他用户均可以收到。用户可以随意的加入或退出(推出以字符串“bye”实现),服务器也可以进行关闭。服务器端的程序结构: 总共有三个函数:主函数(main),实现服务器端的初始化,接受连接;消息处理函数(rcv_snd),接受某一用户的消息,将其进行简转载 2016-11-13 18:24:05 · 526 阅读 · 0 评论 -
STDIN_FILENO的作用及与stdin 的区别
1.STDIN_FILENO的作用STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用。操作系统一级提供的文件API都是以文件描述符来表示文件。STDIN_FILENO就是标准输入设备(一般是键盘)的文件描述符。2.区别1)数据类型不一致:转载 2016-11-14 22:24:54 · 295 阅读 · 0 评论 -
进程间通信方式有那些?各自有哪些优缺点?
进程通信的含义进程是转入内存并准备执行的程序,每个程序都有私有的虚拟地址空间,由代码,数据以及它可利用的系统资源(如文件,管道)组成.多进程/多线程是windows操作系统的一个基本特征.Linux系统一般都统称为进程.由于不同的进程运行在各自不同的内存空间中,其中一个进程对于变量的修改另一方是无法感知的,因此,进程之间的消息传递不能通过变量或其他数据结构直接进行,只能通过进程间通原创 2016-11-30 18:46:19 · 1913 阅读 · 0 评论 -
linux常用操作命令
常用指令ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent)cd 切原创 2016-11-24 22:03:23 · 214 阅读 · 0 评论 -
如何让UDP实现可靠传输
如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输原创 2016-12-08 21:29:49 · 906 阅读 · 0 评论 -
shell编程
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的S原创 2016-11-26 22:59:45 · 222 阅读 · 0 评论 -
抓包工具大全
抓包工具1: HTTP Analyzer 界面非常直观,无需选择要抓包的浏览器或者软件,直接全局抓取,很傻瓜化,但是功能决定不简单。其他抓包工具有的功能它有,其他没有的功能它也有。点击start即可进行抓包,红色按钮停止抓包,停止按钮右边的就是暂停抓包按钮。 抓包完成以后,选择数据列表框内的数据,就可以在下面的选择夹内查看具体的数据,比如post的数据。其中post数据有几种查看方式:1.提交原创 2016-12-09 21:01:35 · 1281 阅读 · 0 评论 -
多线程跟多进程区别
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。 今天终于下了决心,写点东西,以后可以再修修补补也无妨。一.为何需要多进程(或者多线程),为何需要并发? 这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。 我想,只要你不是整天都写那种int main()到底的代码的转载 2016-12-23 21:07:33 · 179 阅读 · 0 评论 -
Linux UDP
UDP前面已经讲过tcp网络通信,然后tcp每次通信都要进行三次握手连接,虽然传输的可靠性比较高,但对于一些及时性的数据的传输显得太过费时,所以就有了UDP这种无连接通信,但数据容易出错。那些函数我这里就不讲了,直接看我上一个博客就行,我这里直接附例子了。udpserver.c[objc] view pla转载 2016-11-10 22:01:39 · 75 阅读 · 0 评论 -
Linux 用pv操作和共享内存实现生产者与消费者机制
原创 2016-10-29 21:38:36 · 789 阅读 · 0 评论 -
Linux 信号
进程通信—信号 产生信号的条件 1、当用户按某些按键时,产生信号 2、硬件异常产生信号:除数为0、无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号 3、进程用kill函数将信号发送给另一个进程 4、用户可用kill命令将信号发送给其他进程下面是几种常见的信号:原创 2016-10-28 21:57:55 · 213 阅读 · 0 评论 -
linux 数据库
数据库1、 Sqlite3_open函数的作用:打开一个数据库函数的原型:int sqlite_open(const char *dbname, sqlite **db)函数的参数:dbname:数据库的名称 db:数据库的句柄返回值:操作成功:SQLITE_OK;头文件:#include 2、 sqlite3_close函数的作用原创 2016-11-02 21:42:16 · 230 阅读 · 0 评论 -
Linux 文件编程
两种典型的操作系统:vxworks风河操作系统 Linux操作系统:源码开源文件操作的概念应用层通过API接口来操作linux操作系统 系统调用函数1、 creat函数的作用:创建一个文件函数的原型:int creat(const char *pathname, mode_t mode)头文件:#include原创 2016-10-22 21:11:56 · 231 阅读 · 0 评论 -
Linux 进程编程
进程编程1、getpid函数的作用:获取进程的识别码、进程号函数的原型:pid_t getpid(void)返回值:目前进程的进程号头文件:#include 2、fork函数的作用:创建一个进程函数的原型:pid_t fork(void)函数的返回值: = 0:表示当前创建的是子进程;>0:表示当前创建的是父进程,返回原创 2016-10-23 22:08:20 · 122 阅读 · 0 评论 -
用多线程实现生产者与消费者的原理
实验目的 通过编写经典的“生产者-消费者”问题的实验,进一步熟悉Linux中的多线程编程,并且掌握用信号量处理线程间的同步和互斥问题。实验内容 “生产者--消费者”问题描述如下: 有一个有限缓冲区(这里用有名管道实现FIFO式缓冲区)和两个线程:生产者和消费者,它们不停地把产品放入缓冲区和从缓冲区拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者原创 2016-11-03 22:50:19 · 1785 阅读 · 0 评论 -
线程之间的互斥和同步
概述 由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题。这里主要介绍Posix中两种线程同步机制,分别为互斥锁和信号量。这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是唯一的情况;信号量更适用于同时可用的资源为多个的情况。互斥锁 互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。这转载 2016-11-04 21:41:52 · 411 阅读 · 0 评论 -
用管道通信实现守护进程
创建两个进程,一个有名管道。一个进程如果正在运行就往管道里面发送运行信息,守护进程负责读取运行信息,一旦守护进程超过三秒读取不到运行信息,就自动将进程重启守护进程代码:#include #include #include #include #include #include #include #define FIFO "/root/linux/myfifo"m原创 2016-10-25 22:09:50 · 273 阅读 · 0 评论 -
Linux 网络编程1
1、 socket函数的作用:建立一个新的socket套接字函数的原型:int socket(int domain,int type, int protocol)函数的参数:domian:表示使用何种地址类型 AF_INET,IPV4网络协议 AF_INET6,IPV6网络协议 t原创 2016-11-05 21:41:01 · 402 阅读 · 0 评论 -
Linux 网络编程2
8、 大端模式、小端模式大端模式:低字节放在低地址,高字节放在高地址小端模式:低字节放在高地址,高字节放在低地址字节序的转化函数头文件:#include 从主机发送到网络:uint32_t htonl(uint32_t hostin32);//32位数据传送,从主机到网络 uint16_t htonl(uint16_t hosti原创 2016-11-07 19:13:22 · 163 阅读 · 0 评论 -
奇偶校验、CRC校验、海明码校验
一、奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为转载 2016-11-08 18:41:47 · 1347 阅读 · 0 评论 -
Linux 进程通信—共享内存
共享内存1、 定义:被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立即查看2、 实现共享内存有哪几个步骤?(1) 创建共享、打开共享内存、使用shmget函数(2) 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数(3) 分原创 2016-10-26 22:41:32 · 158 阅读 · 0 评论 -
linux 进程通信—管道通信
进程通信1、 pipe函数的作用:创建无名管道函数的原型:int pipe(int fds[2])函数的参数:新建的两个描述符fds数组返回 fds[0],表示管道的读取端 fds[1],表示管道的写入端返回值:成功:0 出错:-1;头文件:#include 2、 mkfifo函数的作用:创建原创 2016-10-25 22:11:31 · 228 阅读 · 0 评论 -
Linux 进程通信—消息队列
消息队列就是一个消息的链表。可以把消息看做一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新信息,对消息队列有读权限的进程可以从消息队列中读走消息,消息队列是随内核持续的。消息队列就是一个消息的链表。每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该消息队列的大量信息,包括消息队列键值,用户ID,组ID,消原创 2016-10-27 22:18:43 · 218 阅读 · 0 评论 -
Linux 密码问题
刚才无意间看到了关于Linux下输入密码的问题,一寻思也是,以后可能得用到,了解一下。这里的方法是使用库curses.h中的函数,更多的了解请看:http://fanqiang.chinaunix.net/a4/b2/20020626/060200258.html安装 Ncurses 库: RHEL / Fedora / CentOS Linux转载 2016-11-09 16:30:11 · 196 阅读 · 0 评论 -
shell脚本编程
shell脚本介绍1.为什么使用Shell脚本批量命令重复、条件等控制2.Shell脚本的基本内容第一行:#!/bin/sh第二行:注释:#第三行:变量第四行:条件判断、循环3.脚本的运行方式chmod +x 脚本./脚本文件名4.示例(hello.sh)#!/bin/bash //第一行#这是一个基本的shell脚转载 2016-12-20 22:51:41 · 222 阅读 · 0 评论