
Linux应用开发(C++)
文章平均质量分 76
赛先生.AI
科技公司CTO。机器学习,深度学习,计算机视觉从业者。网络,流媒体技术,编解码技术爱好者。
曾从事汽车行业,安防行业,现从事无人机行业。
-> tecsai@163.com
展开
-
Linux应用开发(15):Linux IO复用技术:epoll详细讲解
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本。它能够显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。原创 2024-08-07 11:16:30 · 1810 阅读 · 0 评论 -
Linux应用开发(14):Linux系统零拷贝技术(sendfile)
在Linux系统中,零拷贝(Zero-Copy)技术是一种高效的数据传输技术,它允许数据直接在发送方和接收方之间传输,无需在内核和用户空间之间复制数据。这种技术可以显著提高文件传输、网络通信等操作的性能。原创 2024-06-25 11:39:01 · 912 阅读 · 0 评论 -
Linux应用开发(11):Linux进程间通信(IPC):共享内存
Linux系统中实现进程间通信(IPC,Inter-Process Communication)有多种手段,共享内存(Shared Memory)作为一种其中比较高效的IPC机制,允许两个或多个进程共享一个给定的存储区。 这种通信方式是(几乎是)最快的IPC方式,因为进程是直接对内存进行访问,不需要像管道和消息队列一样进行数据的拷贝。持有相同区域共享内存的进程可以直接读写这块内存,无需进行数据拷贝,从而提高了通信速度。原创 2024-04-24 14:22:50 · 666 阅读 · 1 评论 -
Linux应用开发(10):Linux进程间通信(IPC):信号
在Linux系统中,信号是一种原始且功能强大的进程间通信(IPC)机制。信号可以被发送给一个进程,以通知它发生了某些事件,进程可以选择处理信号或忽略它。信号主要用于通知进程某些紧急情况,或者触发进程执行特定的操作。 信号是一个软件中断,用于通知进程发生了某种情况。每个信号都有一个唯一的编号和一个预定义好的默认动作。当进程接收到一个信号时,它会根据信号的类型和进程对该信号的处理方式来作出响应。信号可以用于多种目的,如终止进程、中断系统调用、或者在进程中执行一个预设的信号处理函数。原创 2024-04-23 10:35:29 · 988 阅读 · 0 评论 -
Linux应用开发(8):Linux进程间通信(IPC):管道
我们在前面已经介绍了进程间通信(IPC)常用的“消息队列”。本节将讲解另外一种常用的IPC机制,我们称作管道。 管道可以理解为一种特殊的文件,也可以理解为一种特殊的缓冲区,它允许两个进程通过一个半双工的通道进行数据通信。原创 2024-04-23 10:29:28 · 914 阅读 · 0 评论 -
Linux应用开发(7):Linux进程间通信(IPC):POSIX消息队列
消息队列是Linux提供进程间通信的一种方式。当多个进程需要共享或交换数据时,就会用到消息队列。此外,消息队列还可以作为一个缓冲区,可以在处理速度不同的进程间提供数据交换。原创 2024-04-17 16:54:13 · 1176 阅读 · 0 评论 -
Linux应用开发(6):Linux信号量:POSIX和System V信号量
Linux的同步于互斥大致可以分为三个方式,分别是互斥锁,条件变量和信号量。他们针对不同的应用场景而被设计出来,其中互斥锁主要用于对共享资源的保护,条件变量用于控制操作的顺序,而信号量则用来控制对共享资源的访问数量。 Linux信号量是一种用于进程间同步和互斥的低级同步机制。信号量可以在多个进程或线程之间协调对共享资源的访问。在Linux中,主要有两种信号量:POSIX信号量和System V信号量。它们各自有不同的特性和用途。原创 2024-04-17 10:09:38 · 1040 阅读 · 0 评论 -
Linux应用开发(5):通过系统服务部署应用自启动
在Linux系统中,将应用以服务的方式启动意味着该应用会在系统启动时自动运行,且通常以某种方式在后台持续运行。原创 2024-04-16 14:27:17 · 1023 阅读 · 0 评论 -
Linux应用开发(4):POSIX条件变量: pthread_cond_t
条件变量是多线程编程中用于线程同步的一种机制,它允许线程在某个条件不满足时挂起,直到该条件变为真。在这种情况下,条件变量起着线程间同步的作用。 在Linux系统中,默认提供了POSIX线程库pthread。 在POSIX线程(pthread)库中,条件变量通过pthread_cond_t类型表示。原创 2024-04-11 07:24:33 · 356 阅读 · 0 评论 -
Linux应用开发(3):Linux时间操作(time、mktime、localtime等)
在Linux系统中,时间操作函数是编程中经常使用的一部分,它们允许程序获取和设置系统时间,以及对时间进行各种处理。以下是一些常用的时间操作函数的详细介绍。原创 2024-04-08 18:27:36 · 1726 阅读 · 0 评论 -
Linux应用开发(2):Linux线程同步_互斥锁
在Linux系统中,pthread_mutex_t 是由 libpthread 线程库提供的互斥锁机制,它用于同步多个线程对共享资源的访问,以防止竞态条件和数据不一致的问题。pthread_mutex_t 提供了多种类型的互斥锁,包括普通的互斥锁、递归互斥锁、读写锁等,以适应不同的同步需求。 pthread_mutex_t 互斥锁的基本原理是通过原子操作来控制对共享资源的访问。当一个线程尝试获取已经被其他线程持有的互斥锁时,该线程会被阻塞,直到互斥锁被释放。互斥锁内部通常使用原子变原创 2024-04-08 08:28:10 · 853 阅读 · 0 评论 -
C++(10): std::map、std::multimap与std::unordered_map
std::map、std::multimap 和 std::unordered_map 是 C++ 标准模板库(STL)中的三种关联容器,它们提供了存储键值对(pair)的方式,并允许通过键来快速检索值。这三者之间的主要区别在于它们的内部数据结构和对元素的排序方式。原创 2024-04-07 10:48:45 · 1676 阅读 · 0 评论 -
C++(13): 智能指针shared_ptr
shared_ptr智能指针,本质是“离开作用域会自动调整(减小)引用计数,如果引用计数为0,则会调用析构函数”。这样一来,就进化成类似于int、float等的一种会被自动释放的类型。原创 2024-04-03 08:53:29 · 1741 阅读 · 0 评论 -
C++(12): std::mutex及其高级变种的使用
在多线程或其他许多场景下,同时对一个变量或一段资源进行读写操作是一个比较常见的过程,保证数据的一致性和防止竞态条件至关重要。C++的标准库中为我们提供了使用的互斥及锁对象,帮助我们实现资源的互斥操作。原创 2024-04-02 10:12:55 · 2238 阅读 · 0 评论 -
C++(9): std::stack的使用
std::stack 是 C++ 标准模板库(STL)中的一个容器适配器,它提供了后进先出(LIFO)的数据结构。作为适配器,std::stack 基于其他容器(默认是 std::deque,但也可以指定为 std::vector)来实现其功能。原创 2024-03-29 07:17:04 · 361 阅读 · 0 评论 -
C++(8): std::deque的使用
std::deque 是 C++ 标准库中的一个双端队列容器。这个容器支持在序列的两端进行快速的插入和删除操作,其时间复杂度为常数时间 O(1)。同时,std::deque 也提供了对序列中任意元素的随机访问。原创 2024-03-28 07:14:25 · 821 阅读 · 0 评论 -
C++(7): std::list的使用
std::list是 C++ 标准模板库(STL)中的一个顺序容器适配器,它提供了双向链表的数据结构。与 std::vector 不同,std::list 不存储连续的元素,因此它可以高效地在中间插入和删除元素,而不需要移动其他元素。原创 2024-03-26 11:01:55 · 1747 阅读 · 0 评论 -
C++(6): std::queue的使用
std::queue(队列)是C++标准容器之一,提供了的一种先进先出(FIFO)的线性存储结构。std::queue讲究先进先出,即从队列一端插入数据(入队),而从队列另一端提取数据(出队)。原创 2024-03-25 17:43:57 · 1120 阅读 · 0 评论 -
C++(5): std::ofstream的使用
之前讲到,ifstream具有将文件从硬盘中读进内存的功能。而ofstream则是执行反操作,它提供了将文件从内存写入磁盘的功能。std::ofstream 是 C++ 标准库中用于文件输出的类,它提供了向文件写入数据的能力。std::ofstream 属于 头文件中定义的一部分,是继承自 std::ostream 的派生类,专门用于文件操作。使用 std::ofstream 可以以文本或二进制形式写入文件,非常适用于数据持久化、日志记录等场景。原创 2024-03-25 16:01:23 · 2229 阅读 · 0 评论 -
网络传输(3):TFTP客户端使用
在前面的文章中已经讲述了如何安装TFTP客户端和TFTP服务器。本文主要讲解TFTP服务器的启动 和TFTP客户端的使用。原创 2024-03-23 08:09:03 · 855 阅读 · 0 评论 -
网络传输(2):TFTP服务端(服务器)安装与配置
TFTP它其于UDP协议而实现,主要用来在网际实现轻量化数据的传输。在嵌入式Linux中基本已经包含了TFTP客户端,因此可以在其他设备上建立TFTP服务器,已达到轻量化网络传输的目的。如在Uboot中,Busybox中都已经包含了TFTP客户端。接下来简单讲解一下如何搭建TFTP服务器。原创 2024-03-22 13:04:51 · 921 阅读 · 0 评论 -
网络传输(1):Busybox的TFTP协议
熟悉Linux尤其是嵌入式Linux系统的朋友对于Busybox一定不会陌生。Busybox是一个工具软件,里面继承了丰富的Linux应用指令和工具软件。也常被用来做一个极简根文件系统。如早期的海思系列芯片,智芯的一些边缘侧芯片均使用了Busybox作为根文件系统来使用。极简意味着体量小,但也意味着用户需要动手制作更多的依赖包。Busybox中就包含了一个用于网络传输的TFTP服务器,方便用户进行网络传输,典型的是在交叉编译Host与宿主机之间进行可执行文件或其他文件的交互传输。原创 2024-03-22 08:37:42 · 1053 阅读 · 0 评论 -
Linux应用开发(1):Linux下链接动态库(.so)的方法
在Linux系统中开发应用时(C++),经常会遇到需要链接第三方库的情形。有些第三方库是系统默认存在的,有些是自行编译或设备厂商提供的,无论哪一种情况,都需要链接进应用中。原创 2024-03-21 12:57:15 · 2515 阅读 · 0 评论