linux
吕白_
希望自己技术越来越强
展开
-
ubuntu云服务器编译过程中链接异常
无论gcc还是g++都显示有以下段错误,无法成功链接collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumpedcompilation terminated.在stackoverflow中找到一个Q&A解决。特此记录依次执行了以下命令后可以重新正常编译链接。sudo apt purge binutilssudo apt remove makesudo apt autorem原创 2020-05-22 16:28:52 · 1215 阅读 · 5 评论 -
Ubuntu18.04安装过程出现的问题
换了个新电脑, 是NVIDIA的显卡,然后安装了Ubuntu18.04, 结果出现了一些问题, 通过所搜索引擎的帮助… 总算是解决了写篇博客记录一下, 以下的方法都是通过别人的博客学到的, 并不是原创, 不过因为很多时候要重启电脑, 而且也不是同一天解决的, 所以找不到原创的博客链接了文章目录无法进入系统卡在logo界面屏幕分辨率无法调节,只有800的选项无法调节屏幕亮度无法进入系统卡在...原创 2020-01-15 21:55:44 · 625 阅读 · 0 评论 -
shell脚本学习总结及坑点记录
文章目录shell 变量预定义变量环境变量shell 常用关键字let命令case语句解析命令行参数工具调用main函数获得执行脚本的当前绝对路径cut命令test 命令数值测试字符串测试文件测试(),(()),[],[[]],{}()(())[][[]]{}循环for 循环while 循环函数函数传参字典数组shell脚本是一种为 shell 编写的脚本程序, 一般文件后缀为 .shshe...原创 2019-08-05 17:57:48 · 1635 阅读 · 3 评论 -
浅谈 Linux 下的内存管理
文章目录前言面临的问题虚拟内存分段分页页表快表 TLB多级页表缺页错误进程的内存布局内存分配机制(不做详述)mm_struct 和 vm_area_structs前言因为春招的缘故, 经历了一次自我整体全面的知识上的查漏补缺, 接下来应该也会陆陆续续对这些知识点做一个总结吧, 今天就先总结一下Linux对内存管理方面的知识, 博主水平有限, 如果文章中有错误或遗漏的点, 欢迎指正和补充面...原创 2019-04-26 22:23:46 · 390 阅读 · 2 评论 -
Linux 下 IPC 之 System V 共享内存的使用和原理初探
文章目录前言原理初探共享内存的创建过程系列 API 的使用ftokshmgetshmatshmdtshmctl共享内存实例前言总结一下最近对于共享内存的学习, 可能比较浅显或者有疏漏, 欢迎指正!原理初探我们知道, 进程空间相互隔离, 互相对立, 但是共享内存允许多个进程可以访问同一块内存来达到进程间通信的目的.共享内存是最高效的 IPC 机制, 它不涉及任何进程间的数据传输, 而且...原创 2018-11-08 23:11:47 · 862 阅读 · 0 评论 -
Ubuntu 18.04 安装网易云音乐后无法打开
终端输入sudo netease-cloud-music但是这意味着终端不能关闭, 而且每次都要这样实在是麻烦, 发现是 sudo, 那肯定是权限问题了, 所以只要更改网易云的执行权限就好了打开 /usr/share/applications 目录, 在下面找到网易云 ( netease-cloud-music.desktop )更改其执行权限sudo chmod 777 n...原创 2018-08-20 11:28:51 · 2404 阅读 · 0 评论 -
Ubuntu 17.10 安装WPS
下载最新 wps 安装包 官网下载下载 libpng12-0_1.2.54-1ubuntu1_amd64.deb下载字体wps-office-fonts_1.0_all.deb执行命令 sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb执行命令 sudo dpkg -i wps-office_10.1.0.5707~a21_amd-64.d...原创 2018-08-07 21:23:00 · 291 阅读 · 0 评论 -
使用 Linux下 timerfd 系列 API 创建定时器并使用 epoll 监听
特点Linux 内核于内核2.6.25提供了一种创建定时器的 API, 那就是 Linux 特有的 timerfd API, 并且该定时器可以从文件描述符中读取其创建的定时器到期通知. 这也意味着, 可以将文件描述符通过多路复用监听并读取, 而其他的定时器想要将一个 (或多个) 定时器与一组文件描述符放在一起同时监听可不是一件容易的事. 函数接口timerfd 系列 API 有三...原创 2018-08-10 22:26:11 · 6846 阅读 · 5 评论 -
Linux下获取时间函数gettimeofday()
选择gettimeofday()函数的原因:精度比timer()函数高很多,time函数只精确到秒,而gettimeofday精确到微妙,足以满足各种所需,虽然有精度比它更高的,但是它的系统调用开销相对更小函数原型#include<sys/time.h>int gettimeofday(struct timeval* tv, struct timezone* tz...原创 2018-08-03 17:16:10 · 8238 阅读 · 0 评论 -
Linux下安装Tesseract-OCR和以命令行和c++代码的使用方法
以下示例来自Ubuntu17.10(1)安装tesseractsudo apt-get install tesseract-ocr(2)如果想用 Tesseract 对图像进行识别,还需要对应的语言文件。所谓的语言文件是 Tesseract 识别某种语言的文字图像时需要的一些资源,这些东西也可以通过包管理器获取。sudo apt-get install tesseract-oc...原创 2018-05-27 17:07:14 · 2568 阅读 · 0 评论 -
Linux下的setbuf函数,关闭缓冲区?
Linux下不支持fflush刷新缓冲区,所以我们想到了setbuf函数,这随之而来的各种问题和小伙伴探讨之后得出如下结论 首先,网上有很多不同的言论,有的说setbuf只是刷新缓冲区,有的说会关闭缓冲区,众说纷纭,经过我们的测试和查找资料,如果你将stdin/stdout指向NULL,setbuf会关闭你的缓冲区,而不仅仅是刷新(查询度娘和man手册)。 例如:setbuf(stdin,NUL原创 2017-11-12 23:13:59 · 2732 阅读 · 2 评论 -
线程的私有数据(TSD)
我们知道 一个进程内的所有线程继承其数据与环境变量,共享数据空间,但是有时候我们需要有的线程拥有独属于其自己的数据变量,让其只在某个线程内有效,比如最常见的errno,每个线程出错的原因大不相同。 这个时候就需要创建线程的私有数据(TSD)了线程的私有数据可以被其他函数访问,但拒绝被其他线程屏蔽 TSD采用了一键多值的技术,即一个键对应多个不同的值,每个线程访问数据时通过访问该键来得到对应的数据,原创 2017-08-05 09:40:01 · 897 阅读 · 0 评论 -
exec函数族总结
1.execv函数:#include int exevc(const char *pathname,char *const argv[]);argv参数是一个以空指针结尾的数组,即该数组里面存放的是命令执行需要的参数,最后一个元素是NULL 并且测试过后,argv[0]里面存放什么对结果不影响,所以argv[0]应该存放的是名字,而参数在第二个及以后存放 2.execve函数原创 2017-07-26 10:23:52 · 606 阅读 · 0 评论 -
Linux下实现ls命令(-a -l -R)
ls命令是linux下最常用的命令之一,它的使用很简单,可是功能却很多,有很多的参数,这里我们就自己写一个ls命令,实现ls基本的功能,并添加-a和-l的实现。 ls -a 不隐藏任何以. 开始的项目 ls -l 使用较长格式列出详细信息 在这之前我们先介绍几个在实现ls过程中使用的函数。如果参数是一个目录: 首先要介绍一下DIR与dirent原创 2017-07-18 21:57:42 · 4499 阅读 · 1 评论 -
实现自己的myshell
这一周的小项目是实现一个自己的she’ll:实现输入输出重定向,管道,支持shell的内置cd命令,支持后台运行,实现tab补全和历史记录上下翻,ctrl+c不能中断程序,设置环境变量(让其可以像bash,zsh一样运行)各点的实现总结如下:1.重定向:输出重定向,创建你想输出到的文件,然后用dup2(old_fd,new_fd)这个函数,将其的文件描述符置为1,因为 标准输入(stdin):代码原创 2017-07-29 10:08:08 · 1123 阅读 · 0 评论 -
Linux下实现getch()函数
#include <termio.h>int getch(void){ struct termios tm, tm_old; int fd = 0, ch; if (tcgetattr(fd, &tm) < 0) {//保存现在的终端设置 return -1; } tm_old = tm; cfmakeraw(&tm);/转载 2017-06-18 20:43:03 · 2908 阅读 · 0 评论