![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux学习
记录自己学习Linux学习的过程
makunIT
努力学习!
展开
-
数据库sqlite3之 sqlite3_exec()第三个参数回调函数的使用
在写这篇文章之前大家先了解我之前写的关于用c语言操作sqlite3的博客,链接地址如下:https://blog.csdn.net/makunIT/article/details/105192076关于sqlite3_exec的回调函数的知识,我也是在做一个项目中学习到的,看了一些博客吧,很多博客,都表达的不是很清楚,所以我想写这篇博客,记录自己的学习过程。大家先了解一下sqlite3_exec()函数吧。1、sqlite3_exec()函数原型#include <sqlite3.h>原创 2020-05-17 00:02:00 · 3958 阅读 · 7 评论 -
Linux下的调试工具gdb的使用
文章目录gdb的介绍gdb的常用基本命令gdb调试代码示例gdb的介绍gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,gdb主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以...原创 2020-04-29 21:25:52 · 281 阅读 · 0 评论 -
Linux下的检测工具valgrind的使用(memcheck)
Valgrind 是在linux系统下开发应用程序时用于调试内存问题的工具。它尤其擅长发现内存管理的问题,它可以检查程序运行时的内存泄漏问题。文章目录Valgrind的安装1、Valgrind一 工具集简绍2、Valgrind工具Memcheck的介绍3、 Memcheck的使用示例(3.1) 对未初始化内存的使用(3.2)内存泄漏的检测Valgrind的安装在Ubuntu上安装Valgri...原创 2020-04-28 09:58:18 · 2975 阅读 · 0 评论 -
gcc的编译过程
文章目录gcc的使用方法和选项gcc的编译过程我们在linux下写的.c文件,编译的时候只需要gcc xxxx.c 默认生成可执行文件a.out,其实编译的过程要经历四个过程,在此之前我先不讲这四个过程,我先讲一下,Linux下gcc的使用方法和选项gcc的使用方法和选项gcc的使用方法gcc [选项] 文件名在linux下我们可以使用 gcc --help 查看gcc的各个选...原创 2020-04-16 08:25:48 · 552 阅读 · 0 评论 -
Linux下的Makefile的简单使用(简单粗暴)
文章目录Makefile的简介Makefile的通用结构以‘#’开头的行表示注释Mkfile的简单示例Makefile的简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以...原创 2020-04-06 10:50:30 · 1308 阅读 · 0 评论 -
linux下C语言编程操作数据库sqlite3
文章目录1、安装数据库2、sqlite的相关函数2.1 sqlite3_open()2.2 sqlite_close()2.3 sqlite3_exec()2.4 sqlite3_get_table()3、代码示例3.1 创建一个数据库3.2插入数据3.3查看表的内容3.4删除数据1、安装数据库我们从SQLi官网下载页面,https://www.sqlite.org/download.html...原创 2020-03-30 14:54:19 · 1369 阅读 · 0 评论 -
进程通信——信号量
文章目录浅谈什么是信号量ftok()函数获取IPC关键字信号量的相关函数信号量的使用代码示例浅谈什么是信号量在讲信号量之前,先了解两个概念同步和互斥:一条食品生产线上,假设A、B共同完成一个食品的包装任务,A负责将食品放到盒子里,B和C负责将盒子打包。必须得是A先装食品B再打包吧,要是B不按规则先打包,那A还装啥,所以就需要一种机制方法保证A先进行B再进行,“信号量”就是这种机制方法,AB之间...原创 2020-03-22 12:59:59 · 984 阅读 · 0 评论 -
进程通信——消息队列
文章目录什么是消息队列消息队列用的到函数消息队列的代码示例什么是消息队列消息队列的概念消息队列(Message,简称MQ):消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的,每个消息队列的总的字节数是有上限的,系统上消息队列的总数也有一个上限。...原创 2020-03-22 11:18:13 · 998 阅读 · 0 评论 -
进程通信——共享内存
文章目录共享内存的概念共享内存的函数共享内存的代码示例共享内存的概念共享内存:两个或多个进程都可以访问的同一块内存空间,一个进程对这块空间内容的修改可为其他参与通信的进程所看到的。因为数据不需要再客户进程和服务器进程之间复制,所以共享内存是最快的一种进程通信。可以看一下共享内存的示意图共享内存的函数1、shmget函数原型:#include <sys/shm.h>in...原创 2020-03-21 19:40:12 · 305 阅读 · 0 评论 -
进程通信——信号
文章目录信号的概念信号的概念信号是Linux系统中用于进程之间通信或操作的一种机制,信号可以在任何时候发送给某一进程,而无须知道该进程的状态。如果该进程并未处于执行状态,则该信号就由内核保存起来,直到该进程恢复执行并传递给他为止。如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程。收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:第一种是类...原创 2020-03-21 09:53:01 · 855 阅读 · 0 评论 -
进程通信——管道和命名管道
文章目录管道(pipe)的概念管道的特点管道函数管道用法示例命名管道(FIFO)的概念命名管道的特点命名管道函数命名管道用法示例管道(pipe)的概念管道:管道是UNIX系统IPC的最古老的形式,所有的UNIX系统都提供此种通信机制。管道的实质是一个内核缓冲区,进程以先进先出(FIFO, First In First Out)的方式从缓冲区存取数据:管道一端的进程顺序地将进程数据写入缓冲区,...原创 2020-03-20 12:05:16 · 787 阅读 · 0 评论 -
多路复用poll实现网络socket服务器
文章目录poll函数多路复用poll实现网络socket服务器的编程poll函数poll是Linux中的字符设备驱动中的一个函数,poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个...原创 2020-03-10 22:09:10 · 562 阅读 · 0 评论 -
网络socket多线程编程之服务器
关于多线程相关的学习,请参考下面的链接添加链接描述原创 2020-03-10 16:05:32 · 391 阅读 · 0 评论 -
多线程编程学习
文章目录线程概念及函数说明线程属性线程编码示例线程概念及函数说明在操作系统原理的术语中,线程是进程的一条执行路径。所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-loca...原创 2020-03-02 12:36:32 · 445 阅读 · 0 评论 -
互斥锁的概念及使用
文章目录互斥锁的概念及使用互斥锁解决多线程代码示例在上一篇博客中我们提到多线程共享同一个资源,怎么解决多个线程之间共享同一个共享资源,是多线程编程需要考虑的一个问题!本章将会对此问题做出解答!首先我们先了解一下互斥锁互斥锁的概念及使用1、在编程中,用互斥锁来保证共享数据操作的完整性,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量。对互斥量进行上锁以后,其他试图再次对互斥量加锁的线程...原创 2020-03-03 10:57:33 · 3797 阅读 · 0 评论 -
死锁产生的条件及如何解决死锁
文章目录死锁的概念及产生的条件死锁的概念及产生的条件1、死锁的概念:死锁是指两个或两个以上的进程或线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法向前推进。这些永远在互相等待的进程称为死锁进程。我们举个例子:有个方发打法发安抚 ...原创 2020-03-04 20:39:11 · 2078 阅读 · 0 评论 -
多路复用select实现网络socket服务器
文章目录select函数多路复用select实现网络socket服务器多路并发的编程select函数1、 select()函数允许进程指示内核等待多个事件(文件描述符)中的任何一个发生,并只在有一个或多个事件发生或经历一段指定时间后才唤醒它,然后接下来判断究竟是哪个文件描述符发生了事件并进行相应的处理。2、我们可以从内核和select的关系来看:(1)传向select的参数告诉内核:①我们...原创 2020-03-08 11:34:30 · 697 阅读 · 0 评论 -
Linux下用c程序读取树莓派DS18B20探测的温度
文章目录文件I/O操作函数文件夹操作相关系统调用Linux下用c程序读取树莓派DS18B20探测的温度在写编程之前我们,我们先要了解文件I/O操作函数!我将介绍一下我们经常用到的几个函数,文件I/O操作函数一、open系统调用int open(const char*path,int oflag,../*mode_t mode*/); 1、函数说明:open()系统调用用来打开一个文件,...原创 2020-03-09 19:18:29 · 2858 阅读 · 0 评论 -
Linux下的进程内存布局 / c程序内存布局
文章目录进程空间内存布局内存布局编程代码进程空间内存布局不管学习c语言还是学习linux下的编程,我们都要了解并学习。每个进程先天就有0-4G的各自互不干涉的虚拟内存空间,0-3G是用户空间执行用户自己的代码,高1GB的空间是内核空间执行linux系统调用。这里存放着整个内核的代码和所有的内核模块,用户所看到和接触的都是该虚拟地址,并不是实际的物理地址。linux下一个进程在内存里有三部分的数...原创 2020-03-05 23:13:25 · 597 阅读 · 0 评论 -
linux下的守护进程和系统日志
文章目录#守护进程daemon##系统日志###代码示例原创 2020-03-01 11:50:11 · 4126 阅读 · 0 评论 -
网络socket多进程编程之服务器
文章目录fork系统调用网络socket多进程编程之服务器代码示例在写多进程编程之前,我们先了解一下fork系统调用。fork系统调用①Linux内核在启动的最后阶段会创建init进程来执行序/sbin/init,该进程是系统运行的第一个进程,进程号为 1,称为Linux 系统的初始化进程,该进程会创建其他子进程来启动不同写系统服务,而每个服务又可能创建不同的子进程来执行不同的程序。Linu...原创 2020-03-10 15:51:10 · 400 阅读 · 0 评论 -
网络socket编程之服务器和客户端
文章目录socket通信简介socket接口函数socket之服务器编程socket之客户端编程socket通信简介网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“端口”可以唯一标识主机中的应用程序(进程)。这样利用二元组(ip地址,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD...原创 2020-03-10 09:57:21 · 1043 阅读 · 0 评论