![](https://img-blog.csdnimg.cn/2020021614284315.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux c 开发系列
Linux c 开发系列,Linux下c语言的开发
老码农zhuli
自娱自乐的代码人!GIT:https://github.com/zhuli
展开
-
Linux c 开发 - 基础API
Linux c 开发 - 基础API原创 2012-06-23 12:36:17 · 2513 阅读 · 2 评论 -
Linux c 开发 - 结构体
在实际问题中,一组数据往往具有不同的数据类型。例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。显然不能用一个数组来存放这一组数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。 它相当于其它高级语言中的记录。“结构”是一种构原创 2012-10-18 15:52:30 · 1793 阅读 · 0 评论 -
Linux c 开发 - 指针
指针是用来指向一个内存块的地址的值。可以看一张图来理解指针:1. 使用*符号定义一个指针:int *p = NULL;2. &符号为取地址符:int x = 100;p = &x; //取变量x的地址值3. *符号为取值符号:int x = 100;p = &x;printf("值:%d", *p); //*p取值1. int类型指针#in原创 2012-10-18 16:15:27 · 2828 阅读 · 1 评论 -
Linux c 开发 - 线程
Linux中多进程是内核本身就支持的,而多线程则需要Thread库来支持。编译的时候需要带上 -l thread命令原创 2014-09-26 10:33:28 · 1692 阅读 · 0 评论 -
Linux c 开发 - 进程
Linux的四大要素:1. 一段供进程执行的程序,该程序可以被多个进程执行。2. 独立的内核堆栈。3. 进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。同时,这个结构还记录着进程所占用的各项资源。4. 独立的存储空间:即拥有专有的用户空间,除了前面的内核空间还有用户空间。1. 创建进程原创 2014-10-03 19:27:48 · 1600 阅读 · 0 评论 -
Linux c 开发 - 进程间通信
进程间通信主要有以下几种方法:1.原创 2014-10-05 17:19:37 · 1672 阅读 · 1 评论 -
Linux c 开发 - Socket
#include #include int main() { char buf[100]; //定义一个缓存区域,存放read到的数据,长度为100 int n; //定义一个终端读取字符串长度长度 n = read(STDIN_FILENO, buf, 10); //从终端读取数据 if (n < 100) {原创 2012-06-23 13:16:42 · 2263 阅读 · 1 评论 -
Linux c 开发 - 文件操作
介绍文件操作的基本用法。常用API1. 打开文件fopen()FILE *fopen(const char *filename,const char *mode);打开文件。参数filename指向要打开的文件名,mode表示打开状态的字符串。mode表:"r"打开一个用于读取的文本文件"w"创建一个用于写入的文本文件"a"附加到一个文本文件"rb"打开一原创 2012-06-23 13:39:01 · 1554 阅读 · 0 评论 -
Linux c 开发 - 静态库和动态库
关于静态库和动态库之前的篇章我们已经讲到了c语言的gcc,可以查看先关文章 《Linux c 开发 - gcc》1. 静态库。静态库都是lib**.a格式的文件。利用静态库编译的可执行文件会相对比较大,因为静态库会把整个库都整合进目标代码中。使用静态库有一个好处,可执行文件编译成功后,是独立的可执行文件,而不需要依赖于任何外部的函数库支持。我们知道,目标文件一般都是由多原创 2015-02-14 11:08:04 · 2072 阅读 · 1 评论 -
Linux c 开发 - gcc使用详解
gcc是linux下的一种编译器。c语言通常都是通过gcc进行编译而成。原创 2014-10-06 09:07:21 · 1841 阅读 · 0 评论 -
Linux c 开发 - Makefile工具
函数名:strcpy用法:拷贝一个字符串到另外一个字符串中功能:char*strcpy(char*destin,char*source);#include #include int main() { char *str = "helloWorl"; char strArr[10]; strcpy(strArr, str); //str拷贝到strArr,原创 2012-06-26 14:46:24 · 4359 阅读 · 2 评论 -
Linux c 开发 - Autotools使用详细解读
我们前面的章节中已经讲到了Makefile的使用(点击进入查看文章)。我们知道在Linux下面如果编译一个比较大型的项目,我们可以通过Makefile的方式来完成。但是,我们又蛋疼了,Makefile拥有复杂的语法结构,甚至让人难以领会,当我们项目非常大的时候,维护Makefile会成为一件非常头疼的事情。于是我们就有了autotools工具,专门用来生成Makefile,这个工具让我们很大程原创 2015-02-10 17:35:09 · 18592 阅读 · 10 评论 -
Linux c 开发 - 内存管理
在linux上开发c语言的时候,一般将内存管理分为两个部分:原创 2014-10-02 09:27:06 · 1832 阅读 · 0 评论 -
Linux c 开发 - 内存管理器ptmalloc
内存布局X86平台LINUX进程内存布局:Test Segment:存放程序代码,只读,编译的时候确定Data Segment:存放程序运行的时候就能确定的数据,可读可写BBS Segment:定义而没有初始化的全局变量和静态变量Heap:堆。堆的内存地址由低到高。Mmap:映射区域。Stack:栈。编译器自动分配和释放。内存地址由高到低。原创 2016-03-09 10:07:11 · 9061 阅读 · 0 评论 -
Linux c 开发 - libevent
Libevent介绍libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。原创 2014-12-15 17:53:26 · 14076 阅读 · 3 评论 -
Linux c 开发 - 命令行参数和getopt方法的使用细节
命令行参数在c语言的入口函数main方法中,可以添加两个参数:argc和argv。通过这两个参数,我们就可以在可执行文件执行的时候将自定义的参数传递到程序中。看一个例子:#include #include int main (int argc, char *argv[]){ printf("argc:%d\r\n", argc); printf("argv:%原创 2015-03-10 21:52:47 · 3970 阅读 · 0 评论 -
Linux c 开发 - 常用字符串操作全集
字符串在c语言的开发中经常会用到,所以写这篇总结性的文章,在原创 2014-10-22 18:01:46 · 1462 阅读 · 0 评论 -
Linux c 开发 - 常用Linux下c语言调试方法
本文主要总结一下Linux下调试c语言进程的常用方法。1. dmesgdmesg主要用于在进程崩溃掉的时候,显示内核的相关信息。dmesg | tail -f #打印当前信息dmesg -c #打印后,清除缓冲区内容dmesg -s 1024 #定义缓冲区大小[root@localhost togo]# dmesg | tail -f[ 11.859146] sr 1原创 2016-01-05 17:15:26 · 2617 阅读 · 0 评论