linuxC
文章平均质量分 60
hello_world6
嵌入式的新菜鸟。来博客主要是学习一些知识,并把自己的菜鸟知识与大家一起分享
展开
-
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 22:35:57 · 482 阅读 · 0 评论 -
面试题练习01
试卷二一、填空选择题1、请写出 char *p 与“零值”比较的 if 语句 if(p == NULL) 2、写出打印结果___255____ #include #include int main() { char a[1000]; int i; for(i=0;i {原创 2016-11-30 20:43:39 · 373 阅读 · 0 评论 -
UDP通信
UDP网络通信如果想看TCP的网络通信请看上篇,且大部分的知识详解都以总结在上篇,这里就不加赘述了!详情请戳:http://blog.csdn.net/wzhcalex/article/details/53087550下面是UDP的网络通信:使用UDP时Socket编程UDP UDP也是传输层协议,它是无连接的,不可靠的传输服务.当接收数据时它不向发送方提供确认信息转载 2016-11-14 23:06:58 · 804 阅读 · 0 评论 -
volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo原创 2016-11-17 22:53:54 · 165 阅读 · 0 评论 -
linux 的密码问题 ---不带显示的
编写源文件:secert.c[cpp] view plain copy print?#include #include int main() { char p[20]; printf("Please Input password:"); initscr();//该函数是启动curses模转载 2016-11-13 23:21:34 · 432 阅读 · 0 评论 -
关键字const有什么含义?
我只要一听到被面试者说:"const意味着常数"(不是常数,可以是变量,只是你不能修改它),我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可转载 2016-11-29 22:32:46 · 1745 阅读 · 0 评论 -
curl使用的详解
称cURL - transfer a URL摘要cURL[选项] [URL... ]描述cURL 是一个向服务器或从服务器传输数据的工具,它支持HTTP 、HTTPS、FTP 、FTPS 、SCP、SFTP、TFTP、DICT、TELNET、LDAP 或FILE 等协议。该命令设计为无需用户干预即可执行。cURL 提供了一大堆诸如代理支持、用原创 2016-11-16 23:18:34 · 7490 阅读 · 0 评论 -
linux线程的私有数据
#include 函数原型:int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));参数说明:第一个参数为指向一个键值的指针,第二个参数指明了一个destructor函数,如果这个参数不为空,那么当每个线程结束时,系统将调用这个函数来释放绑定在这个键上的内存块。函数原型:int原创 2016-11-01 23:22:14 · 261 阅读 · 0 评论 -
linuxh中wait和waitpid 的区别
函数说明 wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。如果该父进程没有子进程或者它的子进程已经结束,则wait()函数就会立即返回。 waitpid()的作用和wait()一样,但它并不一定要等待第一个终止的子进程(它可以指定需要等待终止的子进程),它还有若干选项,如可提供一个非阻塞版本的 wait()功转载 2016-11-12 23:49:18 · 1173 阅读 · 1 评论 -
进程之间的通信的方式有哪些,他们之间的区别是什么!或者是忧缺点
linux上面的IPC大多都是从UNIX上面继承而来。 最初Unix IPC包括:管道、FIFO、信号。System V IPC包括:System V消息队列、System V信号灯、System V共享内存区。由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)。现有大部分Uni原创 2016-11-28 21:56:07 · 498 阅读 · 0 评论 -
通讯检验
校验方法奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个原创 2016-11-15 23:59:53 · 888 阅读 · 0 评论 -
C++对象模型的简述和内存布局
在C++中,有两种类的成员变量:static和非static,有三种成员函数:static、非static和virtual。那么,它们如何影响C++的对象在内存中的分布呢? 当存在继承的情况下,其内存分布又是如何呢?下面就一个非常简单的类,通过逐渐向其中加入各种成员,来逐一分析上述两种成员变量及三种成员函数对类的对象的内存分布的影响。 注:以下的代码的测试结果均是基于U原创 2016-10-31 23:32:34 · 271 阅读 · 0 评论 -
堆栈的概念
堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first in first out)。栈,先进后出(FILO—First-In/Last-Out)。堆栈空间分配 栈(操作系统):由操作系统自动分配释放 ,存放原创 2016-10-20 22:43:28 · 947 阅读 · 0 评论 -
网络编程的对应的四/七层结构,以及其对应的协议
1、四层,七层网络模型(以及每层对应的协议)网络模型 对应协议原创 2016-12-11 00:55:48 · 4252 阅读 · 0 评论 -
实例说明makefile 能增加宏定义
前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力。所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法。 例说makefile分为以下几个部分,更多内容请参考【例说makefile索引博文】转载 2016-11-18 23:18:08 · 2007 阅读 · 0 评论 -
C语言的库函数和系统的区别
C系统调用与库函数的区别? (1)库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分 (2)库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大 (3)库函数是有缓冲的,系统调用是无缓冲的 系统调用依赖于平台,库函数并不依赖原创 2017-01-01 23:02:08 · 485 阅读 · 0 评论 -
sql的删除表
说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大------drop 出没场合:drop table tb --tb表示数据表的名字,下同 绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据原创 2016-12-08 22:58:02 · 27313 阅读 · 1 评论 -
TCP和UDP的区别和选择
TCP、UDP的区别和选择区别: tcp面向连接,要三次握手才会建立连接,然后再发送数据(连接性) udp无连接,不需要和对方建立连接,就直接把数据发送过去(连接性) tcp可靠(可靠性) udp不可靠(可靠性) tcp面向字节流(报文) udp面向报文,保留报文的边界(报文) tcp传输效率低(效率) udp传输效率高(效率) tcp是全双工(双工性)原创 2016-12-07 22:40:33 · 1388 阅读 · 0 评论 -
strutd对齐问题
//用一个宏定义FIND求结构体struct s中某个成员变量member相对struct s的偏移量.//思考:若struct s的地址为0,则其成员member的地址就是其相对于s的偏移量//扩展: sizeof(struct s) 不一定等于 sizeof(struct s中的每一个成员)的和// 结构体大小不仅由成员的大小决定(sizeof(member)),而且还要转载 2016-12-13 23:19:21 · 256 阅读 · 0 评论 -
多线程的聊天室的服务器端
服务器端的主要功能: 实现多用户群体聊天功能(此程序最多设定为10人,可进行更改),每个人所发送的消息其他用户均可以收到。用户可以随意的加入或退出(推出以字符串“bye”实现),服务器也可以进行关闭。 服务器端的程序结构: 总共有三个函数:主函数(main),实现服务器端的初始化,接受连接;消息处理函数(rcv_snd),接受某一用户的消息,将其进行简单处理之后发送给其他所有的用户;退转载 2016-11-24 23:18:47 · 406 阅读 · 0 评论 -
系统调用和库函数调用的区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:让api也可原创 2016-12-05 22:32:37 · 285 阅读 · 0 评论 -
套接字的三种类型
Socket 的功能6.2.2 Socket 的英文原意就是“孔”或“插座”,现在,作为 BSD UNIX 的进程通讯机制,取其后一种意义。日常生活中常见的插座,有的是信号插座,有的是电源插座,有的可以接受信号(或能量) ,有的可以发送信号(或能量)。假如电话线与电话机之间安放一个插座(相当于二者之间的接口,这一部分装置物理上是存在的)则 Socket 非常原创 2016-12-04 23:36:01 · 9164 阅读 · 0 评论 -
什么是网关
网关 网关工作原理图概述网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打原创 2016-12-13 00:12:46 · 769 阅读 · 0 评论 -
malloc 和free的深入了解
在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用—— 就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以写下这篇文章作为一个对知识的总结。这篇文章之所以命名中有个“浅谈”的字眼,也就是这个意思了!希望对大家有一点帮助! 如原创 2016-12-03 23:21:19 · 338 阅读 · 0 评论 -
面试题4附加答案
试卷四一、填空选择题1、请写出 float x 与“零值”比较的 if 语句 const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x 解析:float是浮点数,不能用==,要用配合一个接近0的数比较。 2、写出输出结果___________原创 2016-12-11 23:34:57 · 301 阅读 · 0 评论 -
信号量之间的PV操作
1.信号量实现线程之间的PV操作,实现线程同步和互斥的数据模型? (1).sem_init函数 函数作用:初始化信号量 函数原型:int sem_init(sem_t *sem,int pshared, unsigned int value) 参数:sem:信号量指针 Pshared:决定信号量能否在几个进程间共享,一般取0 Value:信号量的初始值 (2).信号的操转载 2016-11-19 23:22:28 · 1414 阅读 · 0 评论 -
linux 的线程
线程:线程与父进程的其他线程一起共享进程的所有资源,线程本身不拥有系统资源,只是拥有一些运行必须的数据结构而已 1)创建线程与退出线程 创建的新线程一直运行,直到满足下面的任何一种情况时退出: 1)创建线程时指定要执行的函数执行完毕2)创建线程的进程退出3)某个线程调用了exec函数4) 线程调用pthread_exit()函数退出5)线程被pt原创 2016-12-01 22:24:22 · 181 阅读 · 0 评论 -
vim查看头文件和库
1、最简单的方法是安装对应库的man手册,直接在终端man xxx(函数)如 man printf 就会看到pringf相关的信息,这种方法简单而且显示的信息很多,前提是你的英文必须过关!这种方法不是这里的重点。安装一个最基本的文档sudo apt-get install manpages-dev2、这种方法可以让你更了解头文件或内核源码的结构(1)首先安装一个工具Ctags:sudo转载 2016-10-30 23:06:29 · 986 阅读 · 0 评论 -
linux的性能优化
译文如下:1.1 Linux进程管理进程管理是操作系统的最重要的功能之一。有效率的进程管理能保证一个程序平稳而高效地运行。Linux的进程管理与UNIX的进程管理相似。它包括进程调度、中断处理、信号、进程优先级、上下文切换、进程状态、进度内存等。在本节中,我们将描述Linux进程管理的基本原理的实现。它将更好地帮助你理解Linux内核如何处理进程及其对系统性能的影响。转载 2016-11-10 22:24:53 · 213 阅读 · 0 评论 -
进程通信---管道通信
进程间通信目的数据传输——一个进程需要将它的数据发送给另一个进程资源共享——多个进程之间共享同样的资源通知事件——一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件进程控制——有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变 管道通信·管道是单向的、先进先出的,它原创 2016-10-24 23:08:20 · 190 阅读 · 0 评论 -
文件操作的不带缓冲和带缓冲的区别是什么!
以 ssize_t write(int filedes, const void *buff, size_t nbytes)和size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)来讲讲自己对unix系统下带缓存的I/O和不带缓存的I/O的区别。首先要清楚一个概念,所谓的代缓存并不是指上面两个函数的buff参数,而原创 2016-11-04 11:46:21 · 2426 阅读 · 0 评论 -
数据库
嵌入式数据库 11.1 嵌入式数据库概述1. 嵌入式数据库介绍 随着电子技术的飞速发展,嵌入式系统中的存储器容量和性能也在迅速提高,这为扩大嵌入式的应用领域提供了必要的物理基础。展望未来,嵌入式系统正在向网络化、智能化等高端应用方向发展。在这个发展过程中,嵌入式系统内的数据量会急剧膨胀。因此,嵌入式数据库的作用将会变得越来越重要。 由于嵌入式平台和应用转载 2016-11-03 23:34:34 · 392 阅读 · 0 评论 -
数据库
嵌入式数据库 11.1 嵌入式数据库概述1. 嵌入式数据库介绍 随着电子技术的飞速发展,嵌入式系统中的存储器容量和性能也在迅速提高,这为扩大嵌入式的应用领域提供了必要的物理基础。展望未来,嵌入式系统正在向网络化、智能化等高端应用方向发展。在这个发展过程中,嵌入式系统内的数据量会急剧膨胀。因此,嵌入式数据库的作用将会变得越来越重要。 由于嵌入式平台和应用转载 2016-11-03 23:32:21 · 321 阅读 · 0 评论 -
进程之间的通信--- 信号通信
信号通信方式: 信号类型:下面是几种常见的信号:§ SIGHUP: 从终端上发出的结束信号§ SIGINT: 来自键盘的中断信号(Ctrl-C)§ SIGKILL:该信号结束接收信号的进程,杀死进程§ SIGTERM:kill 命令发出的信号§ SIGCHLD:子进程停止或结束时通知父进程§ SIGSTOP:来自键盘(Ctrl-Z)或调试程序的停止执行信号,原创 2016-10-23 22:57:10 · 307 阅读 · 0 评论 -
cow
#include #include #include #include int main(){ int a = 5; int b = 2; pid_t pid; pid = fork(); if(pid == 0) { a = a-4; printf("I'm a child proc原创 2016-10-12 22:37:28 · 374 阅读 · 0 评论 -
守护进程
守护进程守护进程是Linux中的后台服务进程,一般都是在后台运行的,它的生存期比较长。一般都是系统自举时启动,系统关闭时终止。在Linux中,有一个系统与用户交互的界面,成为终端,很多进程的启动和停止都与终端有很大的关系,一般我们在Linux下编写的代码都是在终端下执行或者停止的,但是守护进程突破了这种限制,它从被执行的时候开始运转,直到系统关闭时才结束,用这种方法,可以为我们的系统提供多原创 2016-10-22 23:26:34 · 259 阅读 · 0 评论 -
linux内核的5大组成部分
一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。1、内存管理 内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管转载 2016-09-26 22:38:05 · 7509 阅读 · 0 评论 -
linux下数据库
我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理, 包括创建数据库、创建表格、插入数据、查询数据、删除数据等。 1. 说明 这里我们假设你已经编译好了sqlite的库文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6转载 2016-11-02 22:52:16 · 477 阅读 · 0 评论 -
linux的文件多路复用的操作
二.关于多路转接模型 select和poll函数,他们可以设定程序中所关心的文件描述符,希望等待的时间等。从函数返回的时候,内核会通知用户准备好的文件描述符的数量,已经准备好的条件或者事件等。通过select和poll的返回结果,对应检测到某个文件描述符的注册事件或者是超时,或者是调用出错。 三.select函数说明 1.所需头文件 2原创 2016-10-21 23:41:22 · 473 阅读 · 0 评论 -
linux并发同步
http://blog.csdn.net/wzhCAlex/article/details/525493835.1 内核同步与死锁问题并发:两个进程可以真正的在临界区中同时执行。原因:(1)中断(2)软中断和tasklet(3)内核抢占(4)睡眠及与用户空间的同步(5)对称多处理 数据加锁: (1)如果有其他执行线程可以访问这些数据;转载 2016-09-15 20:55:49 · 177 阅读 · 0 评论