LinuxC
文章平均质量分 77
屁啦啦小魔仙
南京工程学院学生
展开
-
shell脚本
shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。更明白地来说,shell script就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组,原创 2016-10-09 19:39:42 · 235 阅读 · 0 评论 -
三次握手和四次挥手
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1原创 2016-12-10 19:52:19 · 236 阅读 · 0 评论 -
管理文件
要求:创建一个新文件,文件内容为本班所有同学的学号、姓名、操作系统课程成绩,要求采用有格式的存储方式;文件建立后,能对文件进行插入、删除、查找等操作。[objc] view plain copy print?#include #include #include //#include int NUM = 0; struct原创 2016-12-02 22:01:51 · 487 阅读 · 0 评论 -
LinuxC select函数详解
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(转载 2016-12-04 18:14:57 · 745 阅读 · 0 评论 -
socket发送结构体
客套话不说了:socket中的send函数可以发送字符串,不能直接发送结构体,自己理解:结构体即内存中一段连续的内存,这样send中可以发送结构体指针 上代码:代码功能:客户端发送给服务端一个结构体,服务端返回客户端一字符串客户端代码 client.c#include #include #include #include #include #includ原创 2016-12-13 21:41:25 · 2301 阅读 · 0 评论 -
sql删除表操作
说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大------drop 出没场合:drop table tb --tb表示数据表的名字,下同 绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据原创 2016-12-07 21:41:16 · 8309 阅读 · 0 评论 -
如何让UDP实现可靠传输
如何让UDP实现可靠传输自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包UDP没有Delievery Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一原创 2016-12-09 22:14:24 · 599 阅读 · 0 评论 -
sqlite3_get_table()函数
[objc] view plain copy print?{ sqlite3 *db; charchar *errmsg=NULL; //用来存储错误信息字符串 char ret=0; int my_age=0; //类型根据要提取的数据类型而定 charchar **dbResult; int nRow=0, nCo原创 2016-12-16 18:59:00 · 14659 阅读 · 0 评论 -
网络编程5类ip地址范围
1、五类IP的范围IP地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络; 主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。其中A类、B类、原创 2016-12-15 16:50:14 · 1767 阅读 · 0 评论 -
linux套接字
一、什么是socket socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。二、套接字的属性套接字的特性由3个属性确定,它们分别是:域、类型和协议。1、套接字的域它指定套原创 2016-12-22 22:35:29 · 283 阅读 · 0 评论 -
Linux下段错误分析
段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }123456712345672.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100;原创 2016-12-23 22:10:24 · 314 阅读 · 0 评论 -
Linux下段错误分析
段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = NULL; *ptr = 0; }2.2 访问系统保护的内存地址 #include #include void main() { int ptr = (int )0; *ptr = 100; }2.转载 2016-12-18 17:58:26 · 452 阅读 · 0 评论 -
堆和栈的区别
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。原创 2016-12-24 22:31:54 · 214 阅读 · 0 评论 -
Linux发送结构体
Linux网络通信 Linux下多客户端聊天软件 Linux程序设计 Linux socket send and recevie structure 最近在开发一个Linux下的聊天软件,好久没有做C语言的开发了,感觉到很多东西已经生疏了,这下又碰到用Socket传递结构体的问题,google了一下,发现也有不少朋友遇到同样的问题,所以就打算写出自己的解决办法,跟大家分享。 S原创 2017-01-06 22:25:11 · 572 阅读 · 0 评论 -
Linux下创建进程的三种方式及特点
在Linux中主要提供了fork、vfork、clone三个进程创建方法。 在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。 fork fork创建一个进程时,子进程只是完全转载 2017-08-12 14:39:06 · 24573 阅读 · 0 评论 -
select、poll、epoll整理总结
原地址:http://blog.csdn.net/tianmohust/article/details/6677985/首先对作者表示感谢,整理的很详细,读完受益匪浅!!!一).Epoll 介绍Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并转载 2017-08-25 17:47:29 · 257 阅读 · 0 评论 -
IO多路复用机制
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(转载 2017-08-24 15:57:54 · 393 阅读 · 0 评论 -
Linux下线程同步互斥
线程的基本函数大多数pthread_XXX系列的函数在失败时,并未遵循UNIX函数的惯例返回-1,这种情况在UNIX函数中属于一少部分。如果调用成功,则返回值是0,如果失败则返回错误代码。 1.线程创建:#include int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routi原创 2016-10-31 19:14:45 · 415 阅读 · 0 评论 -
同步和互斥
一、同步和互斥的基本概念现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行,同时运行可能是真的同时运行(SMP架构中),也可能仅仅是操作系统提供的服务(通过将CPU时间分片,并将时间片分给不同的任务)。在多任务操作系统中,同时运行的多个任务可能都需要访问/使用同一种资源多个任务之间有依赖关系,某个任务的运行依赖于另一个任务这两种情形是多任务编程中遇到的最基本的问题原创 2016-10-30 22:32:21 · 496 阅读 · 0 评论 -
进程与线程
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了原创 2016-10-29 21:45:26 · 400 阅读 · 0 评论 -
linux文件锁函数的使用
问:为什么要使用文件锁?答:当多个用户共同使用、操作一个文件的情况时,Linux采用的方法就是给文件上锁,来避免共享的资源产生竞争的状态。问:文件锁有哪些类型?答:文件锁包括建议性锁和强制性锁。一般情况下,内核和系统都不适用建议性锁,采用强制性锁的影响很大,每次读写操作都必须检查是否有所存在。问:怎样实现文件上锁?答:在Linux中,实现文件上锁的函数有lockf() 和fcn原创 2016-10-21 18:44:42 · 1097 阅读 · 1 评论 -
Linux中用守护进程检测程序运行
做的一个嵌入式板子开机会自启动一个程序,但发现它工作数天后会退出。检查内存使用并没有泄漏,于是编写了一个守护进程来不断检查程序是否运行,没运行则运行它,这是一个折衷的办法。说明:需要运行的程序是AlarmInterface,位于目录/rf/下面。我做了一个脚本DuiJiang来启动这个AlarmInterface,并在脚本中添加了触摸屏支持。也就是说启动DuiJia转载 2016-10-22 23:22:18 · 1035 阅读 · 0 评论 -
进程通信之管道通信
管道通信:方式分为无名管道和有名管道。无名管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制。 管道是Linux支持的最初UNIX IPC形式之一,具有以下特点: 1.管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道。 2.只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程) 3.单独构成一种独立的文件系统。管道对于管道两端的进原创 2016-10-23 19:51:52 · 309 阅读 · 0 评论 -
Linux—sqlite3
1 、sqlite3常用命令当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识:sqlite3 test.db查看数据库文件信息命令(注意命令前带字符’.’): sqlite>.database查看所有表的创建语句: sqlite>.schema查看指定表的创建语句: sqlite>.schema原创 2016-11-03 21:32:12 · 230 阅读 · 0 评论 -
进程通信之消息队列
消息队列就是一个消息的链表。可以把消息看做一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定的规则添加新信息,对消息队列有读权限的进程可以从消息队列中读走消息,消息队列是随内核持续的。消息队列就是一个消息的链表。每个消息队列都有一个队列头,用结构struct msg_queue来描述。队列头中包含了该消息队列的大量信息,包括消息队列键值,用户ID,组ID,消息队原创 2016-10-24 19:08:44 · 386 阅读 · 0 评论 -
进程通信之共享内存
共享内存是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容.共享内存实现分为两个步骤:1、创建共享、打开共享内存,使用shmget函数2、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数3. 分离共享内存4. 控制、删除共享内存原创 2016-10-25 16:16:01 · 205 阅读 · 0 评论 -
Linux文件编程
文件分为:1.普通文件 2.目录文件 3.链接文件 4。设备文件文件描述符:标准输入 0;标准输入 1;标准出错处理 2;函数说明: 1.原型 int creat(const char *filename ,mode_t mode)函数的作用:创建函数const:只读,不能轻易改变包含的头文件:#include #include #inlcud原创 2016-10-15 19:17:44 · 220 阅读 · 0 评论 -
网络数据传送的三种方法
一、奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为原创 2016-11-06 19:03:58 · 1984 阅读 · 0 评论 -
Linux编程 函数和进程操作
1,linux进程操作1.1 函数system【调用fork】system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。、[cpp] v原创 2016-10-16 22:32:37 · 535 阅读 · 0 评论 -
select函数及实例分析
select机制中提供了一个数据结构 struct fd_set ,可以理解为一个集合,实际上是一个位图,每一个特定为来标志相应大小文件描述符,这个集合中存放的是文件描述符(file descriptor),即文件句柄(也就是位图上的每一位都能与一个打开的文件句柄(文件描述符)建立联系,这个工作由程序员来完成),这可以是我们所说的普通意义的文件,当然Unix下任何设备、管道、FIFO等都是文件形式原创 2016-10-26 20:28:21 · 446 阅读 · 0 评论 -
数据段,代码段,堆栈段,BSS段区别
5个数据段 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的原创 2016-10-17 10:54:44 · 332 阅读 · 0 评论 -
Linux的shell提取文件名和目录名的方法
本文转载自 ljianhui。很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。下面介绍两种常用的方法来进行相关的操作。一、使转载 2016-10-02 17:19:36 · 363 阅读 · 0 评论 -
进程通信之信号
进程通信—信号 产生信号的条件 1、当用户按某些按键时,产生信号 2、硬件异常产生信号:除数为0、无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号 3、进程用kill函数将信号发送给另一个进程 4、用户可用kill命令将信号发送给其他进程下面是几种常见的信号:原创 2016-10-27 18:35:52 · 306 阅读 · 0 评论 -
网络通信协议TCP
TCP的上一层是应用层,TCP向应用层提供可靠的面向对象的数据流传输服务,TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递。它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信。),应用程序通过向TCP层提交数据接发送/收端的地址和端口号而实现应用层的数据通信。通过IP的源/目的可以惟一地区分网络中两个设备的连接,通过socket的源/目的可以惟一地区原创 2016-11-07 10:26:17 · 429 阅读 · 0 评论 -
exec函数族使用
exec用被执行的程序完全替换调用它的程序的影像。fork创建一个新的进程就产生了一个新的PID,exec启动一个新程序,替换原有的进程,因此这个新的被exec执行的进程的PID不会改变,和调用exec函数的进程一样。下面来看下exec函数族:#includeint execl(const char *path, const char *arg, ...);int execlp(c原创 2016-10-18 19:24:56 · 300 阅读 · 0 评论 -
LinuxUDP网络通信
UDP前面已经讲过tcp网络通信,然后tcp每次通信都要进行三次握手连接,虽然传输的可靠性比较高,但对于一些及时性的数据的传输显得太过费时,所以就有了UDP这种无连接通信,但数据容易出错。那些函数我这里就不讲了,直接看我上一个博客就行,我这里直接附例子了。udpserver.c[objc] view pla原创 2016-11-09 19:18:47 · 286 阅读 · 0 评论 -
GNU下Makefile执行顺序
Gnu make的执行过程分为两个阶段第一阶段:读取所有的makefile文件(包括“MAKEFILES”变量指定的、指示符“include”指定的、以及命令行选项“-f(--file)”指定的makefile文件),内建的变量、明确规则和隐含规则,并建立所有目标和依赖之间的依赖关系结构链表。第二阶段:根据第一阶段已经建立的依赖关系结构链表决定哪些目标需要更新,并使用对应的原创 2017-09-18 21:31:00 · 3880 阅读 · 0 评论