C 高级
文章平均质量分 94
小米拍客光
喜欢IT,喜欢技术,嗨起来~~~~~~~~~~~~~~
展开
-
Linux C 中断言assert()使用简介
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。 所需头文件:#include 报告错误的条件:assert(0); [cpp] view plain copy原创 2016-06-18 23:23:00 · 262 阅读 · 0 评论 -
Linux C 内存管理
提到C语言,我们知道C语言和其他高级语言的最大的区别就是C语言是要操作内存的! 我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。 内存的使用时程序设计中需要考虑的重要因素之一,这不仅由于系统内存是有限的(尤其在嵌入式系统中),而且内存分配也会直接影响到程序的效率原创 2016-06-18 23:28:37 · 195 阅读 · 0 评论 -
Linux 应用---make及makefile的编写
Make 在我们做linux 开发中是必不可少的一部分,它在我们编写大型项目工程文件中起到非常大的作用。 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。Make将只编译改动的代码文件,而不用完全编译。 而Makefile是Mak原创 2016-06-18 23:25:55 · 338 阅读 · 0 评论 -
Linux 系统应用编程——线程基础
传送门:Linux多线程编程实例解析 . linux多线程编程——同步与互斥 . 传统多任务操作系统中一个可以独立调度的任务(或称之为顺序执行流)是一个进程。每个程序加载到内存后只可以唯一地对应创建一个顺序执行流,即传统意义的进程。每个进程的全部系统资源是私有的,如虚拟地址空间,文件描述符和信号处理等等。使用多进程实现多任务原创 2016-06-19 10:02:13 · 271 阅读 · 0 评论 -
Linux 系统应用编程——进程基础
一、Linux下多任务机制的介绍 Linux有一特性是多任务,多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 多任务操作系统使用某种调度(shedule)策略(由内核来执行)支持多个任务并发执行。事实上,(单核)处理器在某一时刻只能执行一个任务。每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用C原创 2016-06-19 10:00:43 · 1540 阅读 · 0 评论 -
Linux 系统应用编程——标准I/O
标准I/O的由来 标准I/O指的是ANSI C 中定义的用于I/O操作的一系列函数。 只要操作系统安装了C库,标准I/O函数就可以调用。换句话说,如果程序中使用的是标准I/O函数,那么源代码不需要任何修改就可以在其他操作系统下编译运行,具有更好的可移植性。 除此之外,使用标准I/O可以减少系统调用的次数,提高系统效率。标准I/O函数原创 2016-06-19 09:58:26 · 338 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
LZ看到一篇关于Linux环境段错误的产生原因的文章,感觉不错,但不是C博客里面,不知如何转载,这里转贴过来,感谢原博主,文章如下: Linux环境下段错误的产生原因及调试方法小结 1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误原创 2016-06-18 23:51:21 · 222 阅读 · 0 评论 -
Linux内核代码风格
Linux内核代码风格 这是一个简短的文档,描述了linux内核的首选代码风格。代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望绝大多数其他代码也能遵守这个风格。请在写代码时至少考虑一下本文所述的风格。 首先,我建议你打印一份GNU代码规范,然后不要读它。烧了它,这是一个具有重大象征性意义的原创 2016-06-18 23:50:14 · 226 阅读 · 0 评论 -
Linux C学习--getline()函数
getline()函数是什么?百度百科这样解释: getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。 linux标准C中使用条件: #define _GNU_SOURCE #include 函数声明: ssize_t ge原创 2016-06-18 23:49:11 · 309 阅读 · 0 评论 -
进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间原创 2016-06-18 23:48:07 · 323 阅读 · 0 评论 -
多进程 VS 多线程
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu原创 2016-06-18 23:46:29 · 473 阅读 · 0 评论 -
Linux C 函数指针应用---回调函数
(这里引用了知乎上一些知友的回答,感觉不错,有助于理解,这里引用作为借鉴,如有冒犯,烦请告知) 我们先来回顾一下函数指针,函数指针是专门用来存放函数地址的指针,函数地址是一个函数的入口地址,函数名代表了函数的入口地址。当一个函数指针指向了一个函数,就可以通过这个指针来调用该函数,可以将函数作为参数传递给函数指针。 那函数指针在我们实际编程中会起到怎样的作用呢?前一篇关于原创 2016-06-18 23:36:35 · 281 阅读 · 0 评论 -
Linux C 深入分析结构体指针的定义与引用
关于结构体的基础知识,网上书上都一大堆,这里就不赘述了,下面我们要学习的是结构体指针。 介绍结构体指针之前,先给大家看一个小程序: [cpp] view plain copy #include #include #include struct Man { char name[10]; };原创 2016-06-18 23:33:46 · 361 阅读 · 0 评论 -
Linux C 数据结构---链表(单向链表)
上一篇我们讲到了线性表,线性表就是数据元素都一一对应,除只有唯一的前驱,唯一的后继。 线性表存储结构分为顺序存储、链式存储。 顺序存储的优点: 顺序存储的缺点: 链表就是典型的链式存储,将线性表L = (a0,a1,a2,........an-1)中个元素分布在存储器的不同存储块,成为结点(Node),通过地址或指针建原创 2016-06-18 23:24:31 · 294 阅读 · 0 评论 -
Linux下静态IP地址的设置及TFTP服务的搭建
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。 一、在谈TFTP之前,先简单讲一下Linux网络配置,网络中最重原创 2016-06-18 23:41:56 · 407 阅读 · 0 评论