Linux编程
mayi_xiaochuan
这个作者很懒,什么都没留下…
展开
-
Linux_1.5_makefile工程管理
(1) 简介(2) MakeFile(术语)(3)文件名(4)伪目标 (5)变量 1>自定义变量 2>系统变量 3> 其他原创 2015-06-16 18:03:40 · 327 阅读 · 0 评论 -
Linux_1.1_ GCC程序编译
GCC简介GCC深入使用原创 2015-06-14 10:18:58 · 498 阅读 · 0 评论 -
Linux_5.1_多线程
1. 线程概念1.1 Linux进程与线程 Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。Linux通过fork创建子进程与创建线程之间是有区别的:fork创建出该进程的一份拷贝,这个新进程拥有自己的变量和自己的PID,它的时间调度是独立的,它的执行几乎完全独原创 2015-06-26 19:17:20 · 369 阅读 · 0 评论 -
Linux-6.3-TCP
(1)基于TCP-服务器的程序设计:(2)基于TCP-客户端的程序设计:(3)基于TCP-通讯模型TCP实例代码:tcp_server.c#include #include #include #include #include #include #include #include #include原创 2015-07-17 18:41:59 · 247 阅读 · 0 评论 -
Linux-6.4-UDP
(1)基于UDP-服务器的程序设计:(2)基于UDP-客户端的程序设计:(3)基于UDP-通讯模型UDP实例代码:udp_server.c#include #include #include #include #include #include #include #include #incl原创 2015-07-18 16:35:45 · 213 阅读 · 0 评论 -
Linux-6.5-服务器模型
(1)服务器模型:(2)UDP:UDP循环服务器:当一个UDP客户端占用UDP服务器时,另外的UDP客户端还可以向UDP服务器发送信息.因为UDP服务不需要建立连接UDP循环服务器代码请看 Linux-6.4-UDP章.(3)TCP:TCP循环服务器代码请看Linux-6.3-TCP章.TCP并发服务器设计:原创 2015-07-18 18:24:40 · 321 阅读 · 0 评论 -
Linux_1.4_应用程序地址布局
(1)内存组成 (2)内存布局 linux所有应用程序都是从0x80480000开始,其中0x80480000是一个虚拟地址 1)下面来测试一下应用程序的地址分布#include #include int global_init_a=1; //全局的,初始化的变量 : 数据段int global_uninit_a; //全局的,没原创 2015-06-16 10:55:57 · 543 阅读 · 0 评论 -
Linux_4.1_进程控制理论
(1)进程状态:(2)进程ID:原创 2015-06-21 01:16:36 · 459 阅读 · 0 评论 -
Linux_4.6_信号量互斥编程
(1) 信号量:(2) 信号量分类(3)首先来说说key key用来唯一标识文件(等)的数字 制定键值:(4) 函数说明 8.1创建/打开信号量集合8.1.1 函数名semget8.1.2 函数原形int semget(key_t key,int nsems,int semflg);8.1.3原创 2015-06-23 17:05:31 · 415 阅读 · 0 评论 -
Linux_4.9_消息队列
(1) 基本概念:posix消息队列与system v消息队列的差别:0、对posix消息队列的读总是返回最高优先级的最早消息,对system v消息队列的读则可以返回任意指定优先级的消息。1、当往一个空队列放置一个消息时,posix消息队列允许产生一个信号或启动一个线程,system v消息队列则不提供类似机制。队列中的每个消息具有如下属性转载 2015-06-25 10:51:57 · 486 阅读 · 0 评论 -
linux下获取程序当前目录绝对路径
1. Shell 版本 #获取当前脚本所在绝对路径 cur_dir=$(cd "$(dirname "$0")"; pwd)2. C语言版本方法一、用realpath函数。这种方法用于开机启动程序获取自身目录会出错char current_absolute_path[MAX_SIZE];//获取当前目录绝对路径if (NULL == re转载 2016-08-15 15:00:34 · 11821 阅读 · 0 评论 -
Linux下使用daemon函数编写后台程序
以前我们在看《unix环境高级编程》的时候,有专门的整章详细介绍如何编写一个后台daemon程序(精灵程序),主要涉及到创建会话组,切换工 作目录,设置文件屏蔽字,关闭不必要的描述符等多个操作。这些操作对于每一个后台程序来说都是类似的。在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir, int __转载 2016-08-18 14:21:15 · 411 阅读 · 0 评论 -
Linux_1.2_GDB调试程序
(1) GDB简介: (2) GDB 使用流程: (3) GDB 命令原创 2015-06-16 00:12:29 · 277 阅读 · 0 评论 -
Linux-6.1-网络概述
Linux网络优势:Linux网络模型:原创 2015-07-12 16:44:01 · 309 阅读 · 0 评论 -
Linux_1.3_Coredump故障分析
(1) 问题: (2)Core Dump 定义: (3) Core Dump 处理的问题 (4) core dump功能的开启和关闭 (5) core dump 使用 (6) 实例一:空指针异常执行如下命令:注意黑色标注的区域,这就是问题所在原创 2015-06-16 00:16:25 · 447 阅读 · 0 评论 -
Linux_3.2_动态函数库设计
(1)动态链接库-特点(与静态链接库对比)(2)动态链接库制作(3) 实例 还是使用静态链接库的程序源码进行测试 ① 将tax.c编译成二级制tax.o gcc -c tax.c -o tax.o ② 依赖tax.o生成动态链接库libtax.so gcc -shared -fPIC tax.o -o libtax.so ③原创 2015-06-17 17:59:53 · 363 阅读 · 0 评论 -
Linux_3.1_静态函数库设计
(1) 外部函数两者之间的区别:(2)函数库分为静态函数库,动态函数库两种 1>静态函数库-特点 2> 使用系统静态库-编译选项 ①使用readelf -d test 命令查看程序默认使用的库函数,为动态链接库②使用静态库编译时,出现如下情况.提示没有lc库(即libc.a)原创 2015-06-16 22:28:03 · 372 阅读 · 0 评论 -
Linux_3.3_系统调用方式文件编程
文件编程(1) 文件描述符 在linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符更多有关文件描述符原创 2015-06-17 23:11:28 · 271 阅读 · 0 评论 -
Linux_3.5_时间编程
时间编程:时间类型:学习方法:时间编程结构:总结1.1获取日历时间1.1.1 函数名time1.1.2 函数原形time_t time(time_t *t);1.1.3 函数功能返回日历时间1.1.4 所属头文件#include 1.1.5 返回值成功:返回日历时间失败:原创 2015-06-20 00:47:08 · 302 阅读 · 0 评论 -
Linux_3.4_库函数方式文件编程
1. I/O为什么使用库函数:在linux中使用系统调用进行程序设计时,是由linux内核实现的,不利于移植!由于多数平台都是兼容c的,而用基于c的库函数进行编程,可提高了可移植性!流:文件指针: 2.函数的学习方法点击打开链接3.1打开文件3.1.1 函数名原创 2015-06-19 10:58:25 · 311 阅读 · 0 评论 -
Liunx_4.4_有名管道
(1) 有名管道:(2) FIFO文件对比普通文件5.2创建有名管道5.2.1 函数名mkfifo5.2.2 函数原形int mkfifo(const char*pathname,mode_t mode)5.2.3 函数功能创建fifo文件(有名管道)5.2.4 所属头文件#include #include 5.2原创 2015-06-22 16:54:44 · 443 阅读 · 0 评论 -
Linux_4.3_无名管道通信
进程间通讯的目的:通讯发展史:进程间通讯的方式:管道通信:管道通信的特点:无名管道:半双工管道(数据只能在一个方向上流动)(1) 函数的学习5.1创建无名管道5.1.1 函数名pipe5.1.2 函数原形int pipe(int p原创 2015-06-22 11:07:02 · 347 阅读 · 0 评论 -
Linux_4.2_多进程程序设计
4.1创建进程4.1.1 函数名fork4.1.2 函数原形pid_t fork(void)4.1.3 函数功能创建一个子进程4.1.4 所属头文件#include4.1.5 返回值成功:在父进程中返回子进程的pid 在子进程中返回的是0失败: -14.1.6 参数说明无参数 4.2创建进程4.2.1 函数名vfork原创 2015-06-22 01:08:44 · 410 阅读 · 0 评论 -
Linux_5.4_线程清理
一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。不论是可预见的线程终止还是异常终止,都会存在资源释放的问题,在不考虑因运行出错而退出的前提下,如何保原创 2015-06-28 18:42:43 · 289 阅读 · 0 评论 -
Linux_4.7_信号量同步编程
进程间同步:生产者和消费者问题:producer设置信号量初始值为0, 生产完成之后+1.cutomer读取信号量,并-1;producer.c文件#include #include #include #include #include #include #include int main(void){ in原创 2015-06-23 22:41:05 · 342 阅读 · 0 评论 -
Linux_5.3_线程同步
条件创建pthread_cond_initCreateEvent销毁pthread_cond_destroyCloseHandle触发pthread_cond_signalSetEvent广播pthread_cond_broadcastSetEvent / ResetEvent等待pthread_cond_wa转载 2015-06-28 18:36:30 · 407 阅读 · 0 评论 -
Linux-6.2-网络编程基础
Linux中的网络编程通过Socket(套接字)实现,Socket是一种文件描述符.网络地址结构:转换IP:字节序转换:htons,htonl发送时使用ntohs,ntohl接收时使用IP与主机原创 2015-07-13 00:50:09 · 405 阅读 · 0 评论