![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux应用
文章平均质量分 66
linux应用基础
one goto one
不苟且于现状,不停留于浅薄
展开
-
内存拷贝函数对比测试
【代码】内存拷贝函数对比测试。原创 2024-07-05 23:50:21 · 136 阅读 · 0 评论 -
优秀的C++项目代码目录结构
对于已编译好的库,使用find_library()查找并链接位于external_libs/中的库文件。当需要链接已编译好的库时,项目主CMakeLists.txt应能根据当前使用的工具链找到对应的库文件进行链接。这样的项目结构能够有效地管理不同工具链编译的库,无论是源码编译还是使用预编译库,都能确保项目在切换工具链时能够顺利构建。一个优秀的C++项目代码目录,涉及到使用不同工具链编译的库时,应确保库的管理和编译过程与项目主体代码的构建相协调,同时考虑到不同库可能存在的平台依赖和版本差异。原创 2024-04-15 20:45:26 · 421 阅读 · 0 评论 -
发布者订阅者模式模型
【代码】发布者订阅者模式模型。原创 2023-11-12 21:14:30 · 156 阅读 · 0 评论 -
gdb调试
GDB调试 运行命令 :运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令;:执行程序至主函数的起始位置,即在函数的第一行语句处停止执行(该行代码尚未执行);:继续执行,到下一个断点处(或运行结束);:单步跟踪程序,当遇到函数调用时,也不进入函数体;此命令同的主要区别是,遇到用户自定义的函数,将进入到函数中运行,而则直接调用函数,不会进入到函数体内;:单步调试如果有函数调用,则进入函数;与命令不同,不进入调用的函数;:可以运行程序直到退出循环体;:运行至某行,不仅仅用来跳出循环;:转载 2022-06-03 22:04:15 · 161 阅读 · 0 评论 -
shell编程基本语法、grep命令、find命令、sed命令、awk命令、C语言正则表达式函数
目录标题一、执行脚本二、基本语法1. 变量2. 代换3. 转义字符4. 引号5. 条件测试三、if语句一、执行脚本执行脚本四种方式:1. chmod +x shell.sh ./shell.sh2. /bin/bash shell.sh以上两种方式都是新建一个子shell,执行cd指令,改变的是子shell的pwd,不影响交互式shell的pwd3. source shell.sh4. . shell.shsource和 . 都是shell的内建命令,该方式启动脚本原创 2022-04-16 16:52:19 · 1978 阅读 · 0 评论 -
Linux 定时器使用
Linux 下可以使用 alarm 函数或 setitimer 函数设置一个定时器。alarm 的定时器是以 秒计时的,setitime 的定时器可以精确到 微秒alarm 可以在进程中设置一个定时器,当定时器指定的时间到时,它向进程发送SIGALRM信号。可以设置忽略或者不捕获此信号,如果采用默认方式其动作是终止调用该alarm函数的进程。seconds:指定秒数成功:如果调用此alarm() 前,进程已经设置了闹钟时间,则返回上一个闹钟时间的剩余时间,否则返回0失败:-1示例:二、setitim原创 2022-07-05 19:56:47 · 1797 阅读 · 0 评论 -
makefile 基础规则
目录标题一、makefile用意二、 makefile规则2.1 命名与使用2.2 一个规则2.3 两个函数2.4 三个自动变量三、使用一、makefile用意一个大工程文件是成百上千的,一个个文件的去编译可想而知效率极其低下,使用Makefile实现自动编译,并且可避免已编译文件再次编译,大大的提升了软件的开发速度。二、 makefile规则2.1 命名与使用名字为Makefile 或 makefile使用指令:make2.2 一个规则编写规则: 目标:依赖条件(一个 tab 缩进)命原创 2022-03-06 19:22:55 · 2354 阅读 · 2 评论 -
linux 文件操作(标准I/O)
linux 文件操作(标准I/O)一、简述标准/IO:标准库的I/O函数,fopen(), fread(), fwrite(), fseek(), fclose()等是对系统调用接口进一步封装。系统I/O和标准I/O区别:(原文链接)二、标准I/O fopen()函数 功能 打开指定文件并获取文件结构体指针,或创建新文件 头文件 #include <stdio.h> 声明 FILE *fopen(const char *path, const char *原创 2021-03-21 21:45:22 · 427 阅读 · 2 评论 -
Linux文件编程会改变光标的函数
会改变光标位置的函数:read()、write()、fwrite()、fread()lseek()、rewind()fprintf()、fscanf()需要注意的是使用fprintf()、scanf()的读写问题与printf()、scanf()类似(非指定地址下)遇到空格结束当前占位符的输入,且空格被忽略char* a = "hello world";printf("%s\n", a);输出结果: hello worldFILE* fp;char* a = "hello wo原创 2021-11-02 19:46:18 · 172 阅读 · 0 评论 -
linux 文件操作之修改程序配置文件
linux 文件操作之修改程序配置文件修改程序配置文件是文件操作的一个小应用,要注意的是写入文件的都是字符。demo原创 2021-04-01 18:51:42 · 366 阅读 · 0 评论 -
linux 文件操作 (系统I/O)
linux 文件操作一、简述文件操作的两种方式系统I/O:系统调用接口,open(), read(), write(), lseek(), close()。是操作系统直接提供的编程接口(API)。标准/IO:标准库的I/O函数,fopen(), fread(), fwrite(), fseek(), fclose()。是对系统调用接口进一步封装。区别:系统I/O常用于硬件级别,可以设置读缓冲区,一般没有写缓冲区;标准I/O常用于软件级别,自带读写缓冲区。二、系统I/O o原创 2021-03-21 21:51:27 · 365 阅读 · 0 评论 -
Linux线程之死锁产生原因及避免方法
一、什么情况会造成死锁呢?由于多把互斥锁的使用不当,导致多个线程无法向前运行,以致死锁。如下例子:线程A按先加锁1再加锁2的顺序加锁,线程B按先加锁2再加锁1的顺序加锁,线程A和B都无法获得第二把锁,导致线程A与B甚至其他想获得锁的线程都会被阻塞而无法先前运行二、如何避免死锁呢?方法很简单,加锁的时候只要按照锁的顺序进行加锁即可避免产生死锁情况三、demo死锁情况#include <stdio.h>#include <pthread.h>int data = 0原创 2021-06-22 11:56:14 · 584 阅读 · 0 评论 -
Linux 多线程编程(线程、互斥锁、条件变量)
linux多线程编程一、多线程的优点多线程程序作为一种多任务、并发的工作方式,当然有以下的优点:提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个原创 2021-06-21 19:14:42 · 246 阅读 · 0 评论 -
Linux多线程基础总结
1. 线程参数传递2. 线程分离3. 线程资源的回收4. 线程清理函数5. 线程取消6. 线程与信号7. 线程安全8. 线程同步9. 条件变量10. 信号量11. 生产者消费者模型12. 保证多线程程序的稳定性原创 2022-08-28 11:00:58 · 822 阅读 · 1 评论 -
Linux多线程之生产者消费者问题(条件变量)
linux多线程之生产者消费者问题什么叫做生产者消费者问题?生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。解决方法要解决该问题,就必须让生产者在缓冲区满时休眠(要么干脆就放弃数据),等原创 2021-07-07 18:41:10 · 634 阅读 · 0 评论 -
信号量实现生产者消费者模型
一、信号量信号量是进化版的互斥锁,由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住,这样虽然达到了多线程操作共享数据正确性的目的,却无形中导致线程的并发性下降。线程从并行执行,变成了串行执行。与直接使用单进程无异。而信号量是相对折中的一种处理方式,既能保证同步,数据不混乱又能提高线程的并发。二、主要应用函数sem_t sem; 定义信号量int sem_init(sem_t *sem, int pshared, unsi原创 2022-03-28 15:52:02 · 1157 阅读 · 0 评论 -
Linux线程之读写锁
一、读写锁读写锁与互斥锁类似,但读写锁允许更高的并行性,其特性为:读共享,写独占,写锁优先级最高二、读写锁特性读写锁是写模式加锁时,解锁前,所有对该锁加锁的线程都会被阻塞读写锁是读模式加锁时,如果线程以读模式对其加锁已经成功,其他线程试图以写模式加锁的线程将阻塞,以读模式加锁的线程不受影响;如果当前同时有试图读模式加锁和写模式加锁的线程,优先满足写模式加锁,读锁、写锁并行阻塞三、主要函数原型读写锁初始化定义读写锁: pthread_rwlock_t rwptr;函数原型: in原创 2022-03-25 11:22:47 · 1399 阅读 · 0 评论 -
进程间通信 六种IPC方式详解
进程间通信(IPC)介绍IPC 单机形式有管道、消息队列、信号量、共享储存。多机形式有socket、streams。一、管道管道分为无名管道和有名管道。而管道通常指无名管道。无名管道特点工作方式为半双工 , 一方写另一方只能读(同一时间数据只能单方向流动)使用只限于具有亲缘关系的进程之间,即父子、兄弟进程之间管道可以理解为一种特殊的文件,可以使用read、write等函数进行读写, 但它不是普通文件,存在于内存中数据被读取后就消失,不可进行二次读取......原创 2021-04-21 23:27:06 · 5056 阅读 · 0 评论 -
Linux 进程相关概念及API
一、进程的相关概念1. 进程的由来首先要知晓某 xxx.c 文件 通过 gcc xxx.c -o xxx 指令生成的可执行文件xxx叫做程序,程序是静态的。进程是程序的一次运行活动,也就是程序执行起来,系统中就多了一个进程。2. 查看系统中的进程指令ps 指令 (通常配合着 grep 指令来查看某一个进程)ps -aux|greptop 指令(类似于Windows底下的任务管理器)top3. 进程的标识符每一个进程都有一个唯一的非负整数的ID叫做pid,类似于身份证。原创 2021-04-08 18:07:54 · 276 阅读 · 1 评论 -
Linux 进程exec族函数system函数popen函数详解
一、exec族函数作用创建一个子进程后去调用一种exec函数去执行另一个程序。头文件#include <unistd.h>函数声明int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execv(const char *path, char *const argv[]);int execvp(const char *原创 2021-04-10 21:56:53 · 563 阅读 · 3 评论