linux
文章平均质量分 88
ruglcc
一个有代码洁癖的技术宅,研发12年,专注于 android ios 嵌入式 桌面应用
展开
-
使用CLion 在 WSL+ ssh 环境下开发C/C++应用
1. 安装WSL及配置C/C++开发环境安装WSL请自行百度,或是参考另一个文章 win 10 下 使用vscode 应用WSL +cmake 做C/C++开发调试sudo apt update # 更新软件包sudo apt install build-essential #安装build-essential软件包sudo apt install gdb2. 安装SSH服务2.1...原创 2019-11-06 16:35:48 · 2174 阅读 · 1 评论 -
win 10 下 使用vscode 应用WSL +cmake 做C/C++开发调试
【爽歪歪】win 10 下 使用vscode 应用WSL +cmake 做C/C++开发调试安装WSL启动Linux 子系统功能进制控制面板->程序和功能, 将适用于Linux的Windows子系统勾选。安装 Windows Terminal在 Microsoft Store市场上搜索 WSL 安装 Terminal安装WSL在 Microsoft Store市场上搜索 WS...原创 2019-11-06 16:16:10 · 9807 阅读 · 4 评论 -
在emacs中运行shell命令
M-! cmd RET:打开一个名为“*Shell Command Output*“的窗口,并把该命令的执行结果显示在其中。按下”C-x 1“组合键可以关闭这个窗口。由于Shell命令的输出是在一个编辑缓冲区里,因此我们可以对它进行编辑、保存等操作。M-| cmd RET:运行Shell命令,并使用编辑窗口中选定的区域作为该Shell命令的输入,然后可以选择是否用该Shell命令的输出来替换编辑窗转载 2012-08-02 10:30:21 · 25643 阅读 · 3 评论 -
Vim 实用技术,第 1 部分: 实用技巧
0. Vim 简介作为开源世界最重要的编辑器之一(另一个是 Emacs),Vim 以其强大的功能和可定制能力被众多开发者所喜爱。不过,也许就是因为 Vim 的功能太强大了,要真正用好 Vim 并不容易。本文作者在多年的实际使用中逐渐掌握了一些实用技术,在此介绍给大家。——本文并不企图对 Vim 作全面而系统的介绍,但也绝非零星地点到即止;而是希望通过介绍一些重要特性和提供相关参考信息,引起转载 2012-08-02 11:28:55 · 694 阅读 · 0 评论 -
Linux通配符
在使用shell命令对多个文件对象执行单一操作时,例如删除当前目录下的file1到file8,多次使用相同的命令rm file1到rm file8非常麻烦,通常使用通配符模式解决这个问题:rm file[1-8]。当使用通配符指定一种模式时,该模式与底层系统上的一个或多个文件匹配,shell以空格隔开的所有匹配对象的列表来替换该模式;当模式不能找到匹配对象时,shell将不理会参数、通配符等,转载 2012-08-01 15:50:15 · 3332 阅读 · 0 评论 -
学习Emacs系列教程 :目录
学习Emacs系列教程(一):基本使用 学习Emacs系列教程(二):导航 学习Emacs系列教程(三):编辑(1) 学习Emacs系列教程(四):Minibuffer 学习Emacs系列教程(五):编辑(2) 学习Emacs系列教程(六):编辑(3) 学习Emacs系列教程(七):剪切板 学习Emacs系列教程(八):查找替换 学习转载 2012-08-02 07:57:43 · 791 阅读 · 0 评论 -
学习Emacs系列教程(三):编辑(1)
上回说到怎么在Emacs中移动光标,这回将介绍如何在Emacs中编辑文本。任何一款文本编辑软件的核心功能当然就是编辑文本,Emacs也不例外,虽然它也有许多其它强大的本领,但都离不开文本编辑。闹,文本编辑说白了也就是打字,专业点说我们需要实现一种所见即所得输入方式。在Emacs中打字和Notepad中没什么区别,一样也是打开一个文件直接往里面敲字符就可以了,中文也行。这个和Vim区别比较大,我转载 2012-08-02 09:18:42 · 1112 阅读 · 0 评论 -
学习Emacs系列教程(八):查找替换
查找替换是任何编辑器都不可能缺少的功能,就连小小的Notepad都有快速查找,更不用说像Emacs这样的庞然大物了。其重要性这里就不多说了,接下来将一步一步给你介绍如何在Emacs中进行查找和替换。 Emacs将查找分成了四个大类,分别是:简单查找,增量查找,词组查找和正则查找。四种方式各有特点,适用范围也不同,大家根据需要熟悉一两种即可。一、增量查找 先介绍增量查找的转载 2012-08-02 10:13:13 · 1296 阅读 · 0 评论 -
学习Emacs系列教程(九):缓冲管理
首先提及一点,这里的缓冲就是Emacs中的buffer。闹,所谓的缓冲就是当前你正在编辑的东东。比如,你打开一个文件Emacs会建立一个缓冲来装载这个文件,当你调用帮助时Emacs会建立一个叫"*Help*"的缓冲来显示帮助内容,打开Tutorial则会出现TUTORIAL.cn这个缓冲。本质上来说缓冲就是内存中开辟的一段空闲空间。 每个缓冲都有自己的名字,像上面说的"TUTORIAL.cn转载 2012-08-02 10:14:01 · 1308 阅读 · 0 评论 -
学习Emacs系列教程(十):多窗口
首先先明确下Emacs窗口的概念,我们双击Emacs图标打开程序见到的Windows窗口叫做Frame,包含了标题栏,菜单栏,工具栏,最下面的Mode Line和回显区域,而中间一大块显示文本的区域则是Window,实际上每个窗口都有自己的Mode Line。下文中我将称Frame为框,Window为窗口,这里和我们平时理解的Windows窗口有点区别。 在Emacs里面,一个框可以分割出多转载 2012-08-02 10:14:22 · 2192 阅读 · 0 评论 -
Emacs 编辑环境,第1部分:学习Emacs的基础知识
1、开始之前了解本教程中包含的内容以及如何最好地利用本教程。关于本系列Emacs 编辑环境深受 UNIX® 开发人员的喜爱。它是世界公认的编辑器之王,但许多用户发现它学起来需要一定的过程。Emacs 环境初看起来并不是很直观,而且和其他编辑器和字处理器的工作方式不大一样。但 Emacs 的学习并不困难。一旦您熟悉了它,就会发现它有多么直观,而且越用越顺手。这个系列教程将为您转载 2012-08-02 11:10:14 · 26432 阅读 · 0 评论 -
Emacs 编辑环境,第 2 部分: 学习 Emacs 的基本模式和编辑特性
本教程是系列文章中的第二部分,展示了如何使用文本编辑中的一些重要特性,并引入了模式的概念,向您介绍了它们的用途、如何调用它们、以及在您的日常编辑工作中可能用到的常见模式。此外还描述了一个用于定义缩写的特殊模式,而这些缩写可用于进行速记,并且解释了如何使用与具体模式无关的一些文本编辑特性——包括重要的文本操作命令、搜索和替换方法、以及内置拼写检查器。本教程主要面向那些已经熟悉 Ema转载 2012-08-02 11:12:10 · 1156 阅读 · 0 评论 -
Emacs 编辑环境,第 3 部分: 高级 Emacs 文本操作
这是了解 Emacs 的系列教程中的第三部分,基于您在前两部分教程中所学习的内容,介绍一些用于文本操作的更高级的 Emacs 功能。您将学习高级编辑技术的实际示例,包括如何执行递归编辑、进行标记和使用文本矩形区块,并了解使用剪切环和二次选择的复杂选择技术。 本教程的主要目标是面向那些已经对 Emacs 文本编辑技术具有基本认识的用户,并向您展示如何以初级和中级技术为基础转载 2012-08-02 11:13:36 · 1783 阅读 · 0 评论 -
Emacs 编辑环境,第 5 部分: 确定您的 Emacs 视图的形状
1.确定您的 Emacs 视图的形状 这篇中级水平的实践教程构建于您在本系列文章前面部分中所学习的知识的基础之上,并向您介绍了如何针对您的特定需求自定义和使用该系统。在本教程中,您将了解如何管理和操作您的 Emacs 会话视口,即 Emacs X 客户端主窗口和其中显示缓冲区以及其他信息的空间。您将了解对这个区域进行分区的最好方法,包括通过使用水平的和垂直的分割来划分屏幕,为一个转载 2012-08-02 11:19:17 · 4450 阅读 · 0 评论 -
Emacs 编辑环境,第 6 部分: 自定义您的 Emacs 环境
1.关于本教程本文是学习 Emacs 的系列教程中的第 6 部分。本系列文章中前面的几个教程向您介绍了 Emacs 的一些基础知识;这篇中级水平的实践教程基于您在前面的教程中所学习的基础知识,并向那些已经熟练掌握 Emacs 的基本控制方法的读者介绍如何根据他们特定的需求来自定义和使用该系统。在本教程中,您将了解如何采用各种方法对系统进行自定义、更改其行为、并使转载 2012-08-02 11:25:55 · 2485 阅读 · 0 评论 -
循环切换 buffer 的方法(emacs)
1. emacs 自带的 bs.el 更好用(global-set-key "\C-x\C-b" 'bs-show) ;; or another key(global-set-key "\M-p" 'bs-cycle-previous)(global-set-key "\M-n" 'bs-cycle-next)2.;;; cyclebu转载 2012-08-03 12:35:06 · 3801 阅读 · 0 评论 -
LINUX下GDB调试
(注:本文实例在SecureCRT中得到验证,以下为全文转载:)本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。转载 2012-08-03 13:18:17 · 763 阅读 · 0 评论 -
Vim 实用技术,第 3 部分: 定制 Vim
3.1. Vim 脚本基础在 .vimrc 文件中,和在第二章提到的插件和语法文件中,使用的语言就是 Vim 脚本语言。这种脚本语言语法有点像 BASIC,表达式有点像 C,还是比较容易理解的。本章中并不打算对其作很系统的介绍(要完整了解的话,请参见“:help usr_41.txt”),而只是介绍一些基本知识,特别是,了解定制 .vimrc 所需要的基本知识。Vim 脚本相当于可转载 2012-08-03 12:34:16 · 834 阅读 · 0 评论 -
SecureCRT 下使用emacs, backspace被改成C-h的问题解决
问题描述:SecureCRT通过ssh登陆一台linux,使用emacs时backspace键有问题,被改成了C-h键。解决办法 secureCRT -> 选项 -> 会话选项 -> 仿真 -> 映射键; 勾上backspace发送delete。原创 2012-08-03 13:38:53 · 4647 阅读 · 0 评论 -
emacs如何显示行号
1.(global-linum-mode t)将行号显示在编辑区左侧,linum已经是emacs-23的内置lisp函数之一了,效果如图:2. 安装setnu.el在.emacs中添加(require 'setnu)(setnu-mode t)可以在每行左边显示行号,如图:3. 安装wb-line-number.el在.emacs中添加(se转载 2012-08-03 13:56:24 · 15784 阅读 · 0 评论 -
emacs 技巧记录
(1)在emacs中运行vim+x ansi-term /usr/bin/vi root# which vi/usr/bin/vi原创 2012-08-04 17:27:21 · 667 阅读 · 0 评论 -
linux中fork创建进程讲解
大家知道Linux中创建子进程的一个很好的方法是函数调用fork,但是很多初学者对fork的理解上可能有点困难。我们举个例子来看看fork的用法吧。 大家用fork的时候记住fork是“分叉”的意思就很好理解了。 记得初学fork() 函数及遇到这个函数时,总是不能理解fork为什么会这样写,就会分成父子两个进程。 先看一下fork() 的经典模式//-转载 2012-08-04 20:19:09 · 696 阅读 · 0 评论 -
linux查看进程和终止进程
1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab)。 2. ps 命令用于查看当前正在运行的进程。 grep 是搜索 例如: ps -ef | grep java 表示查看所有进程里CMD是java的进程信息 ps -aux | grep java -a转载 2012-08-05 09:21:41 · 989 阅读 · 0 评论 -
linux进程/内存管理的数据结构之u区
一个进程的上下文包括:用户级上下文,寄存器上下文和系统级上下文。用户级上下文:正文,数据,用户栈区和共享存储区;寄存器上下文:程序寄存器(IP),即CPU将要执行的下一条指令地址;处理机状态寄存器(EFLAGS);栈指针;通用寄存器。系统级上下文:进程表项(proc结构)和U区,在Linux系统中,这两部分被合成task_struct,区表及页表,核心栈等。转载 2012-08-05 12:06:05 · 3437 阅读 · 0 评论 -
如何在emacs中打开shell模式时实现shell命令记忆功能
在用emacs打开shell模式时,up 键是向上一行,而不是shell中的上一个命令,这有时候很不方便,为了实现这个功能步骤如下1.m + x global-set-key 按“上” comint-previous-input 向上一个命令2m+x global-set-key 按 “下” comint-next-input 向下一个命令原创 2012-08-04 17:18:19 · 3205 阅读 · 0 评论 -
大话Emacs Shell Mode:让工作更轻松的技巧
GNU Emacs 有很多“神奇”的功能。常言说“每一个 hacker 都有一个自己的 GNU Emacs”。这个事实在很大程度上得益于人们能够按照完全自我的方式去使用 GNU Emacs。将 Shell 运行在 GNU Emacs 里面就是众多的用法之一。 在 GNU Emacs 里面运行 Shell 有很多种不同的方法。包括各种各样的终端模拟。但是在笔者的工作当中更多的使用的是 She转载 2012-08-04 17:20:57 · 2638 阅读 · 0 评论 -
浅析linux中fork函数
作者:吴新武,华清远见嵌入式学院讲师。Linux通过clone()系统调用实现fork()、vfork()和__clone()库函数创建新的进程,这个调用通过一系列的参数标志来指明父子进程的共享资源,最终将各自的参数标志位传递给clone,由clone()去调用do_fork()来实现创建新的进程的目的。do_fork的实现源码在kernel/fork.c文件中,其主要的作用就是复转载 2012-08-04 20:07:49 · 835 阅读 · 0 评论 -
Linux 环境进程间通信(0) 序:深刻理解Linux进程间通信(IPC)
简介: 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重转载 2012-08-05 12:26:03 · 1137 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(上)
一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强转载 2012-08-05 12:42:56 · 1728 阅读 · 0 评论 -
Linux环境进程间通信(三) 消息队列
消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随转载 2012-08-05 12:59:59 · 2050 阅读 · 0 评论 -
Linux环境进程间通信(四) 信号灯
一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号转载 2012-08-05 13:06:28 · 1684 阅读 · 0 评论 -
Linux 环境进程间通信(六) 套接字
一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。1、背景知识linux目前转载 2012-08-05 13:11:21 · 1722 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(下)
一、信号生命周期从信号发送到信号处理函数的执行完毕对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。 下面阐述四个事件的实际意义:信号"诞生"。信号的诞转载 2012-08-05 12:58:36 · 1800 阅读 · 0 评论 -
Linux下的定时器-程序设计
简介这篇文章主要记录我在试图解决如何尽可能精确地在某个特定的时间间隔执行某项具体任务时的思路历程,并在后期对相关的API进行的归纳和总结,以备参考。 问题引出很多时候,我们会有类似“每隔多长时间执行某项任务”的需求,乍看这个问题并不难解决,实则并不容易,有很多隐含条件需要考虑,诸如:时间精度是多少?时间是否允许出现偏差,允许的偏差是多少,偏差之后如何处理?系统的负载如何?这个程序允转载 2012-08-05 13:25:22 · 1074 阅读 · 0 评论 -
Linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部 的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常转载 2012-08-05 14:09:01 · 553 阅读 · 0 评论 -
Linux下的定时器
简介这篇文章主要记录我在试图解决如何尽可能精确地在某个特定的时间间隔执行某项具体任务时的思路历程,并在后期对相关的API进行的归纳和总结,以备参考。问题引出很多时候,我们会有类似“每隔多长时间执行某项任务”的需求,乍看这个问题并不难解决,实则并不容易,有很多隐含条件需要考虑,诸如:时间精度是多少?时间是否允许出现偏差,允许的偏差是多少,偏差之后如何处理?系统的负载如何?这个程序允许转载 2012-08-05 14:42:48 · 1376 阅读 · 0 评论 -
Ubuntu 12.04 下安装 Eclipse
方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单)$ sudo apt-get install eclipse方法二:(优点是安装内容清爽,缺点是配置麻烦)1、安装JDK,参考 Ubuntu 12.04 下安装 JDK 72、下载 Eclipse从 http://www.eclipse.org/down转载 2012-08-05 14:51:33 · 43860 阅读 · 1 评论 -
Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
首先是安装Eclipse,方法有两种: 第一种是通过Ubuntu自带的程序安装功能安装Eclipse,应用程序->Ubtuntu软件中心,搜Eclipse安装即可。 第二种方法是用命令:应用程序->附件->终端 然后输入(中间可能需要你输入密码):转载 2012-08-05 14:53:03 · 12501 阅读 · 6 评论 -
ubuntu 12.04安装telnet和ssh服务
ubuntu安装telnet服务1. sudo apt-get install xinetd telnetdsudo vi /etc/inetd.conf并加入以下一行,假如没有发现这个文件,自己新建立一个也是可以的哦,刚开始我也不知道,自己试了之后才知道的。telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in转载 2012-07-31 09:26:59 · 10195 阅读 · 0 评论 -
Linux内核源代码的阅读及相关工具介绍
随着linux的逐步普及,现在有不少人对于Linux的安装及设置已经比较熟悉了。与Linux 的蓬勃发展相适应,想深入了解Linux的也越来越多。而要想深入了解Linux,就需要阅读和分析linux内核的源代码。 Linux的内核源代码可以从很多途径得到。一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码。另外还可以从互连网上下载,解压缩后文件转载 2012-08-04 20:15:19 · 732 阅读 · 0 评论