linux
文章平均质量分 77
BeyondESH
个人博客:blog.beyondesh.top
展开
-
Linux系统编程—I/O缓冲区(C语言实现)
定义:I/O缓冲区是指在内存里开辟的一块区域,用来存放接收用户输入和用于计算机输出的数据,以减小系统开销和提高外设效率。作用平滑I/O需求峰值:通过缓冲区,可以使得数据的传输更加平滑,避免因为I/O设备的速度差异而导致的数据传输瓶颈。提高系统速度:使用缓冲区可以使得用户进程在下一数据块读取的同时,处理已读入的数据块,从而提高系统的整体速度。原创 2024-10-08 22:53:16 · 1496 阅读 · 0 评论 -
Linux线程同步—竞态条件与互斥锁、读写锁(C语言)
当多个线程并发访问和修改同一个共享资源(如全局变量)时,如果没有适当的同步 措施,就会遇到线程同步问题。这种情况下,程序最终的结果依赖于线程执行的具体时序, 导致了竞态条件。竞态条件(race condition)是一种特定的线程同步问题,指的是两个或者以上进 程或者线程并发执行时,其最终的结果依赖于进程或者线程执行的精确时序。它会导致程 序的行为和输出超出预期,因为共享资源的最终状态取决于线程执行的顺序和时机。为了 确保程序执行结果的正确性和预期一致,需要通过适当的线程同步机制来避免竞态条件。原创 2024-09-20 23:51:41 · 1770 阅读 · 0 评论 -
Linux线程同步—竞态条件和互斥锁(C语言)
当多个线程并发访问和修改同一个共享资源(如全局变量)时,如果没有适当的同步 措施,就会遇到线程同步问题。这种情况下,程序最终的结果依赖于线程执行的具体时序, 导致了竞态条件。竞态条件(race condition)是一种特定的线程同步问题,指的是两个或者以上进 程或者线程并发执行时,其最终的结果依赖于进程或者线程执行的精确时序。它会导致程 序的行为和输出超出预期,因为共享资源的最终状态取决于线程执行的顺序和时机。为了 确保程序执行结果的正确性和预期一致,需要通过适当的线程同步机制来避免竞态条件。原创 2024-09-19 23:41:34 · 1108 阅读 · 0 评论 -
Linux线程处理—线程终止
1当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。需要注意的是,pthread_detach 不会等待子线程结束,如果在后者执行完毕之前主 线程退出,则整个进程退出,子线程被强制终止。原创 2024-09-18 21:19:33 · 798 阅读 · 0 评论 -
Linux线程处理—线程终止
当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。原创 2024-09-18 10:59:06 · 356 阅读 · 0 评论 -
Linux线程处理—线程终止
当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。原创 2024-09-17 22:49:47 · 439 阅读 · 0 评论 -
Linux线程处理—线程创建
每个线程都有一个唯一的标识符(即线程 ID),这个标识符是通过 pthread_t 类型 的变量来表示的,当 pthread_create 成功创建一个线程时,它会将新线程的标识符存储 在 thread 参数指向的位置。是 POSIX 线程(也称为 pthreads)库中一个重要的函数,它用于等待一个线程的终止。当一个线程被创建后,它可能会并行地执行自己的任务,而主线程(或其他线程)可能需要等待这个线程完成其任务后才能继续执行。函数就提供了这样的同步机制。原创 2024-09-16 23:34:43 · 809 阅读 · 0 评论 -
Linux进程通讯—信号处理
signal系统调用是 UNIX 和类 UNIX 系统(如 Linux)中用于处理信号的一个基础机制。信号是软件中断,它们可以被系统或者进程发送给另一个进程或线程,以通知它们发生了某个事件。这些事件可以是硬件中断(如外部设备请求服务)、软件异常(如除零错误)、用户请求(如用户请求停止进程)等。原创 2024-09-16 03:52:29 · 207 阅读 · 0 评论 -
Linux进程通讯—消息队列
消息队列生产者是指产生消息并将消息发布到消息队列或主题中的应用程序。它负责构建或生成消息,这些消息可以是简单的文本、复杂的结构化数据或二进制数据,具体内容、格式和结构取决于应用程序的需求和消息中间件的设计。消息队列消费者(Message Consumer)是消息队列系统或消息中间件中的另一个关键角色,它负责从消息队列中取出(或订阅并接收)消息,并对这些消息进行进一步的处理。原创 2024-09-16 01:44:41 · 1880 阅读 · 0 评论 -
进程通讯—共享内存对象
共享内存是指允许多个不相关的进程访问同一个逻辑内存区域。这种内存区域在物理上通常是同一段内存,但在虚拟地址空间中,不同进程通过各自的页表将其映射到这一共同的物理内存区域。原创 2024-09-15 13:17:14 · 728 阅读 · 0 评论 -
Linux进程通讯——共享内存对象
进程通讯—共享内存,可以开启一块内存共享对象,我们可以像使用一般文件描述符一般使用这块内存对象。truncate 和 ftruncate 都可以将文件缩放到指定大小,二者的行为类似:如果文件 被缩小,截断部分的数据丢失,如果文件空间被放大,扩展的部分均为\0 字符。缩放前后 文件的偏移量不会更改。缩放成功返回 0,失败返回-1。 不同的是,前者需要指定路径,而后者需要提供文件描述符;ftruncate 缩放的文件 描述符可以是通过 shm_open()开启的内存对象,而 truncate 缩放的文件原创 2024-09-12 01:20:22 · 680 阅读 · 0 评论 -
Linux进程通讯—有名管道FIFO
FIFO 和 Pipe 一样,提供了双向进程间通信渠道。但要注意的是,无论是有名管道还 是匿名管道,,否则可能出现通信混乱(进程读到自己发的 数据)采用库函数创建。原创 2024-09-11 21:31:39 · 541 阅读 · 0 评论 -
Makefile快速入门教程
定义方式# = := ::= 变量名区分大小写,可以是任意字符串,不能含有":", “#”, “=”使用方式# $() 或者 ${}main.o : $(files) # 或者 ${files}...如果变量名只有一个字符,使用时可以不用括号,如$a, $b, 但不建议这样用,不管是否只有一个字符都写成$(a), $(b)这种形式前面定义的变量都是单行的。变量值有多行,多用于定义shell指令语法。原创 2024-09-08 01:56:35 · 1093 阅读 · 0 评论 -
Linux软件部署
MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。MySQL数据库可谓是软件行业的明星产品,无论是后端开发、大数据、AI、运维、测试等各类岗位,基本上都会和MySQL打交道。让我们从MySQL开始,进行实战的Linux软件安装部署。MySQL 5.7版本安装MySQL 8.x版本安装由于MySQL5.x和8.x各自有许多使用者,所以这两个版本我们都演示安装一遍。原创 2024-09-03 22:28:43 · 4499 阅读 · 0 评论 -
Linux基础命令
比如,简单的ls命令就有:-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1等选项,可以发现选项是极其多的。课程中, 并不会将全部的选项都进行讲解,否则,一个ls命令就可能讲解2小时之久。课程中,会对常见的选项进行讲解, 足够满足绝大多数的学习、工作场景。,将cat a.txt的结果,作为grep命令的输入,用来过滤。原创 2024-09-03 22:28:04 · 1161 阅读 · 0 评论