![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux知识点
Gerald Kwok
低到尘埃里,才能开出花来。
展开
-
Linux 删除文件中匹配的行
背景:跑了个脚本但是有很多特殊的情况,这种情况需要忽略,但是我需要把日志里的错误都拿错来,错误中穿插了特殊情况,复制的时候就得一直中断,很麻烦。例如:err1err2err3xxxx 0 nilerr4err5xxxx 0 nil就不能一下拉到底一起复制,所以就研究了下,Linux 可以通过命令,删除文件中匹配到的行。seqsed -i ‘/preSql/d’ a.txt删除匹配到preSql的行sed -i ‘1d’ a.txt删除第一行sed -i ‘3~2d原创 2020-09-08 11:54:44 · 3978 阅读 · 0 评论 -
Mark: Linux 动态查看日志文件
便捷动态查看日志文件在 Linux 上跑脚本或者任务的时候,总是把日志打到文件里,有时候想知道当前进度的时候总是使用tail log.txt,这样很不程序员,所以就调研了下如何动态查看。使用命令 tailf log.txt就可以实现动态查看日志文件,与该命令相似的命令是 tail -f log.txt...原创 2020-09-01 18:43:41 · 554 阅读 · 0 评论 -
线程的同步与互斥
线程的同步与互斥之所以会引出这个概念全都是因为 “线程之间是抢占式调度的”。关于线程互斥的一下关键词:临界资源:多个线程访问的那个公共资源叫做临界资源。临界区:访问临界资源的代码叫做临界区。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用。原子性:不会被任何调度机制打断的操作,该操作只有两种状态,要么完成,要么未完成。线程不安全:多线...原创 2019-06-05 17:16:20 · 434 阅读 · 0 评论 -
锁(哲学家就餐问题)
锁原创 2019-06-05 17:37:35 · 588 阅读 · 0 评论 -
Linux线程控制
Linux线程控制线程控制的相关函数不是系统调用是库函数。线程控制的函数库是POSIX线程库。POSIX是一个标准,规定了操作系统需要写哪些接口供程序员来使用。与线程有关的函数大多数都是以pthread_开头的。需要使用线程函数库的时候需要引入头文件 <pthread>,并且因为该库是一个动态库,在写编译命令的时候需要在后面加上 -lpthread链接这个库。创建线程...原创 2019-06-01 17:12:40 · 163 阅读 · 0 评论 -
生产者消费者模型概要和基本练习
生产者消费者模型什么是生产者消费者模型?完成某些操作的时候可能需要一些数据,这样的数据可能由专门的 线程/进程产生, 再由专门的线程/进程使用。需要有一个交易场所。(存储数据的地方,可能是一个队列、栈或者其他数据结构)生产者:负责产生数据,然后把数据放到交易场所中。消费者:负责消费数据,从交易场所中获取走。生产者消费者模型的要点。一个交易场所(阻塞队列)。两个角色(生产...原创 2019-06-06 18:09:08 · 767 阅读 · 0 评论 -
进程与线程
进程和线程有什么区别?这里我们可以先确定两个大的不同。进程:资源的管理(管理内存,管理打开文件…)线程:调度和执行(调度规则:和进程类似也是抢占式调度)举个栗子原创 2019-05-29 16:40:24 · 147 阅读 · 0 评论 -
使用gdb调试多线程程序
使用gdb调试多线程程序在我们日常打代码的日子里,肯定会涉及到多线程的程序,那么在Linux下编写多线程的程序应该如何调试呢。void *ThreadEntry(void *arg){ (void)arg; while (true) { std::cout << "Thread 1 runnning ... " << std:...原创 2019-06-01 17:31:35 · 502 阅读 · 0 评论 -
Socket 编程
Socket 编程socket 常见 APIsocket创建 socket 文件描述符。适用于 TCP/UDP 协议。这个函数是服务器和客户端都需要用。参数:domain: 这是需要填一个宏,表示要用什么协议。例如这里填 AF_INET表示创建的socket使用 ipv4协议。type: 这里也是填一个宏,表示需要用什么协议。例如填 SOCK_DGRAM表示使用UDP协...原创 2019-06-15 12:20:45 · 162 阅读 · 0 评论 -
进程间通信--管道
进程间通信–管道管道是一种最基本的 IPC 机制,作用于有有血缘关系的进程之间,完成数据传递。调用 pipe 系统函数即可创建一个管道,有如下特质:其本质是一个伪文件(实为内核缓冲区)由两个文件描述符引用,一个表示读端,一个表示写端规定数据从管道的写端流入管道,从读端流出管道的原理:管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。管道的局限性如下:数据自己读不能自己写...原创 2019-08-14 09:42:14 · 137 阅读 · 0 评论 -
未决信号、阻塞信号、信号处理函数表
未决信号、阻塞信号、信号处理函数表实际执行信号的处理动作称为信号递达(Delivery)。信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞 (Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。这张图表...原创 2019-05-28 10:48:40 · 591 阅读 · 0 评论 -
volatile 是个坑
volatile 是个坑。volatile 关键字是告诉编译器,不要把这个变量放到寄存器里。我们先来看一段代码:#include <iostream>#include <csignal>int flag = 1;void MyHandler(int signal){ (void)signal; flag = 0; std::co...原创 2019-05-28 10:19:36 · 600 阅读 · 0 评论 -
有趣的僵尸进程和孤儿进程
有趣的僵尸进程和孤儿进程原创 2019-05-08 10:50:31 · 102 阅读 · 0 评论 -
Linux小程序---我的彩色进度条
Linux小程序—我的彩色进度条开始在linux下做一些小程序,第一个就是进度条。其实就是一个伪进度条。是根据时间来走的。先来看一下代码:#include <stdio.h>#include <unistd.h>#include <string.h>#define NONE "\e[0m"#define BLACK ...原创 2019-04-30 12:24:43 · 294 阅读 · 0 评论 -
“负责”的进程等待
“负责”的进程等待什么是进程等待?进程等待就是父进程等待子进程结束并退出,然后回收子进程。为什么要进行进程等待?如果子进程退出,父进程不对子进程做出处理的话,就会造成僵尸进程,那么这个时候只要父进程不退出,那么子进程一直占用资源,就会造成内存泄漏。并且僵尸进程不可以被信号终止掉。这个问题是非常严重的。子进程退出保持僵尸进程状态是为了返回信息让父进程回收,所以进程等待也可以回收子进程的退...原创 2019-05-14 20:28:10 · 133 阅读 · 0 评论 -
“神秘”的PCB
“神秘”的PCBPCB是什么?PCB是一个进程控制块。他是一个结构体,里面包含了各种描述进程的信息。当然它也有很多名字,在windows系统下它叫PCB,但是在Linux系统下它又叫做task_struct,在μC实时操作系统下它又叫OS_TCB。但是不管它叫什么,他都是一个用来描述进程的结构体。通常,我们把这种结构体统称为PCB。PCB里面都有什么?(这里用Linux系统下的task_st...原创 2019-05-10 10:13:10 · 251 阅读 · 0 评论 -
简单的调度算法
简单的调度算法原创 2019-05-08 09:28:10 · 3670 阅读 · 0 评论 -
关于fork()的那些事
关于fork()的那些事原创 2019-05-11 09:58:22 · 223 阅读 · 0 评论 -
有趣的内存对齐面试题
有趣的内存对齐面试题题目描述:内存对齐机制是一个用空间换取时间的做法,具体怎么做的,或者为什么要这么做?可以参考我的博客:内存对齐这道题是这样的:问程序会在那么地方崩溃?如果你直接答:那么你就错了兄弟。这道题是分平台的。我们先在Linux CentOS X86_64位平台下运行一下试试看。#include <iostream>struct S{ int a; ...原创 2019-05-11 11:24:32 · 427 阅读 · 0 评论 -
Linux gcc没有默认对齐数(内赋gcc官方大佬邮件)
轻松求得系统的默认对齐数在自己解决问题中遇到了内存对齐的问题。突然发现我的Linux默认对齐数好像不是4。可以参考这个OJ题来理解。有趣的内存对齐面试题CSDN上好像所有的博客都说是4。然后就记录一下怎么推断出自己系统的默认对齐数。推断对齐数首先,我们先写一个程序:#include <iostream>struct test{ char a; doub...原创 2019-05-11 14:21:00 · 2377 阅读 · 16 评论 -
信号--Signal
信号–Signal信号的作用就相当于神经系统,来帮助操作系统进程运行过程中遇到的各种意外。在Linux系统中通过命令kill -l来查看所有信号。信号产生的方式:1. 通过终端按键产生信号(键盘产生)最常见的键盘产生的信号:ctrl + c => 2对应的是2号信号SIGINT。ctrl + z => 19对应的是19号信号SIGSTOP。ctrl + \ =&g...原创 2019-05-28 10:00:17 · 1095 阅读 · 0 评论 -
linux基础命令
linux基础命令1.为什么在自己的电脑上装linux时需要装字符界面而不要图形界面?我们看windows或macOS的操作系统的界面多么漂亮多么流畅,但是为什么linux操作系统的图形界面…emm…不知道怎么说,那么到底是为什么呢?难道linux没有人给弄吗?并不是的,应该说linux不需要。首先linux面向的用户是程序猿或者是懂电脑的人的。linux基本上都是用在服务器上的,而服务...原创 2019-04-21 20:54:27 · 153 阅读 · 0 评论