红联Linux门户

红联Linux论坛
Linux帮助
Linux就该这么学
  • 当你在Linux上启动一个进程时会发生什么?

    2018-01-19 - 本文是关于 fork 和 exec 是如何在 Unix 上工作的。你或许已经知道,也有人还不知道。几年前当我了解到这些时,我惊叹不已。 我们要做的是启动一个进程。我们已经在博客上讨论了很多关于系统调用的问题,每当你启动一个进程或者打开一个文件,这都是一个系统...

  • Bash脚本:正则表达式基础篇

    2018-01-01 - 正则表达式(简写为 regex 或者 regexp)基本上是定义一种搜索模式的字符串,可以被用来执行搜索或者搜索并替换操作,也可以被用来验证像密码策略等条件。 正则表达式是一个我们可利用的非常强大的工具,并且使用正则表达式的优点是它能在几乎所有计算机语言...

  • 使用pss提升你的代码搜索能力使用pss提升你的代码搜索能力

    2018-01-01 - 搜索代码库是开发者每天都要做的事情。从修改 bug 到学习新代码,或者查看如何调用某个 API,能快速在代码库中导航的能力都是一大助力。幸运的是,我们有专门的工具来搜索代码。 pss 就是其中一个工具,让我们来看看如何安装和使用它吧。 什么是 pss? pss...

  • 如何改善遗留的代码库

    2017-12-28 - 在每一个程序员、项目管理员、团队领导的一生中,这都会至少发生一次。原来的程序员早已离职去度假了,给你留下了一坨几百万行屎一样的、勉强支撑公司运行的代码和(如果有的话)跟代码驴头不对马嘴的文档。 你的任务:带领团队摆脱这个混乱的局面。 当你的...

  • 如何在Bash中抽取子字符串如何在Bash中抽取子字符串

    2017-12-11 - 所谓子字符串就是出现在其它字符串内的字符串。 比如 3382 就是 this is a 3382 test 的子字符串。 我们有多种方法可以从中把数字或指定部分字符串抽取出来。 本文会向你展示在 bash shell 中如何获取或者说查找出子字符串。 在 Bash 中抽取子字符串 其语法...

  • 使用groff编写man手册页

    2017-12-09 - groff 是大多数 Unix 系统上所提供的流行的文本格式化工具 nroff/troff 的 GNU 版本。它一般用于编写手册页,即命令、编程接口等的在线文档。在本文中,我们将给你展示如何使用 groff 编写你自己的 man 手册页。 在 Unix 系统上最初有两个文本处理系统:trof...

  • ARMv8上的kprobes事件跟踪ARMv8上的kprobes事件跟踪

    2017-12-02 - 介绍 kprobes 是一种内核功能,它允许通过在执行(或模拟)断点指令之前和之后,设置调用开发者提供例程的任意断点来检测内核。可参见 kprobes 文档 获取更多信息。基本的 kprobes 功能可使用 CONFIG_KPROBEES 来选择。在 arm64 的 v4.8 内核发行版中, kpro...

  • 通过构建一个简单的掷骰子游戏去学习怎么用Python编程通过构建一个简单的掷骰子游戏去学习怎么用Python编程

    2017-11-20 - Python 是一个非常流行的编程语言,它可以用于创建桌面应用程序、3D 图形、视频游戏、甚至是网站。它是非常好的首选编程语言,因为它易于学习,不像一些复杂的语言,比如,C、 C++、 或 Java。 即使如此, Python 依然也是强大且健壮的,足以创建高级的应用...

  • 如何在Linux上使用VIM进行.Net Core开发如何在Linux上使用VIM进行.Net Core开发

    2017-11-04 - 对于在Linux上开发.Net Core的程序员来说, 似乎都缺少一个好的IDE. Windows上有Visual Studio, Mac上有Visual Studio for Mac, 难道Linux只有Visual Studio Code了吗? Linux上有两个最好的编辑器: VIM和Emacs, 哪个更好不是这一篇的主题, 这一篇的主题是如何...

  • 每个安卓开发初学者应该了解的12个技巧每个安卓开发初学者应该了解的12个技巧

    2017-10-30 - 距离安迪鲁宾和他的团队着手开发一个希望颠覆传统手机操作模式的操作系统已经过去 12 年了,这套系统有可能让手机或者智能机给消费者以及软件开发人员带来全新的体验。之前的智能机仅限于收发短信和查看电子邮件(当然还可以打电话),给用户和开发者带来很...

  • 如何像NASA顶级程序员一样编程——10条重要原则如何像NASA顶级程序员一样编程——10条重要原则

    2017-10-23 - 引言:你知道 NASA 顶级程序员如何编写关键任务代码么?为了确保代码更清楚、更安全、且更容易理解,NASA 的喷气推进实验室制定了 10 条编码规则。 NASA 的开发者是编程界最有挑战性的工作之一。他们编写代码并将开发安全的关键任务应用程序作为其主要关注点...

  • Linux系统编程--fcntl()读写锁实例

    2017-10-14 - 在多进程对同一个文件进行读写访问时,为了保证数据的完整性,有事需要对文件进行锁定。可以通过fcntl()函数对文件进行锁定和解锁。 1. fcntl 1.1.功能描述:根据文件描述词来操作文件的特性。 1.2.用法: int fcntl(int fd, int cmd); int fcntl(int fd, in...

  • 开发一个Linux调试器(十):高级主题开发一个Linux调试器(十):高级主题

    2017-10-13 - 我们终于来到这个系列的最后一篇文章!这一次,我将对调试中的一些更高级的概念进行高层的概述:远程调试、共享库支持、表达式计算和多线程支持。这些想法实现起来比较复杂,所以我不会详细说明如何做,但是如果你有问题的话,我很乐意回答有关这些概念的问...

  • 11个超酷的编程新工具11个超酷的编程新工具

    2017-10-07 - 工具对开发人员来说至关重要。工具可以让一个开发人员的日常工作更高效,并且只需要关注最重要的事情。对于开发人员来讲,寻找更好的替代工具往往比坚持使用熟悉单身过时的工具更困难。 在这篇文章中,我们将列出你在日常工作中能够使用的新的开发工具。很多...

  • 开发一个Linux调试器(九):处理变量开发一个Linux调试器(九):处理变量

    2017-10-07 - 变量是偷偷摸摸的。有时,它们会很高兴地呆在寄存器中,但是一转头就会跑到堆栈中。为了优化,编译器可能会完全将它们从窗口中抛出。无论变量在内存中的如何移动,我们都需要一些方法在调试器中跟踪和操作它们。这篇文章将会教你如何处理调试器中的变量,并...

  • 利用Shell脚本进行文件内容去重利用Shell脚本进行文件内容去重

    2017-10-06 - 最近在处理文件的时候,遇到文件内容存在大量重复项的情况,很显然需要文件内容去重。因为使用的是Python,本来想要找找Python文件内容去重的方法,但是看到的基本利用Set或者List等方法(还没来得及逐一验证)。后来,找到一个利用Shell脚本写的文件内容去...

  • 开发一个Linux调试器(八):堆栈展开开发一个Linux调试器(八):堆栈展开

    2017-10-05 - 有时你需要知道的最重要的信息是什么,你当前的程序状态是如何到达那里的。有一个 backtrace 命令,它给你提供了程序当前的函数调用链。这篇文章将向你展示如何在 x86_64 上实现堆栈展开以生成这样的回溯。 系列索引 这些链接将会随着其他帖子的发布而上线。...

  • Linux下使用getopt函数来获取传入的参数

    2017-10-01 - 之前写代码,要向程序中传参数,程序中使用argv[1]、argv[2] 实际linux中的命令使用-r -l -i 等等,比如tcpdump,守护进程dhcp,顿时感觉自己脸好红,low到家了。 在linux下有一个函数叫getopt就可以写成-r -l -i 的形式,下面是一个使用openssl通信的程序,...

  • 向Node.js核心贡献代码的六个步骤向Node.js核心贡献代码的六个步骤

    2017-10-01 - 本文的目的是帮助您完成向 Node.js 核心文件贡献代码的第一个提交! 向 Node.js 贡献代码的方式有很多种。可以参与某个工作组(网站或者联机诊断工作组等)的工作,可以在 Nodeschools 开设课程提供 Node.js 的教学, 让那些有着同样困惑的人可以向你学习。...

  • 每个程序员都该知道的五大定律每个程序员都该知道的五大定律

    2017-09-28 - 定律-或称法则,可以指导我们并让我们在同伴的错误中学习。这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的五大定律。其中有些和开发有关,有些和系统组织有关。它们可以帮助你成为合格的软件工程师。 墨菲定律 凡是可能出错,就一定出错。 这条...

  • 开发一个Linux调试器(七):源码级断点开发一个Linux调试器(七):源码级断点

    2017-09-23 - 在内存地址上设置断点虽然不错,但它并没有提供最方便用户的工具。我们希望能够在源代码行和函数入口地址上设置断点,以便我们可以在与代码相同的抽象级别中进行调试。 这篇文章将会添加源码级断点到我们的调试器中。通过所有我们已经支持的功能,这要比起最...

  • 减少curl中内存分配操作(malloc)

    2017-09-17 - 今天我在 libcurl 内部又做了一个小改动(https://github.com/curl/curl/commit/cbae73e1dd95946597ea74ccb580c30f78e3fa73),使其做更少的 malloc。这一次,泛型链表函数被转换成更少的 malloc (这才是链表函数应有的方式,真的)。 研究 malloc 几周前我开...

  • 用Linux shell脚本爬取豆瓣邮箱用Linux shell脚本爬取豆瓣邮箱

    2017-09-16 - 前两天总结一下邮箱格式的正则表达式,写了一个脚本来判断输入的邮箱地址是否符合邮箱的格式。在网上找资料的时候,发现基本都是用Python和Java来做爬虫,当然Python的居多。本着学习的心态,既然得到了邮箱地址有效性的判断,那就顺便用脚本写一个抓取网页...

  • 7个你现在就该学习Python的理由7个你现在就该学习Python的理由

    2017-09-12 - Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎。 诚然,它有点老了,但仍是80后啊 至少没有 Cobol 或者 Fortran 那么老。而且,如果还能派上用场的话,为啥要折腾着改变它呢 (...

  • linux c使用system调用shell脚本

    2017-09-08 - system的原理其实就是调用fork创建子进程去执行shell命令,然后返回最后一条shell命令的状态值。linux下man system可以看到返回值说明: 1.如果返回值等于-1就是system函数执行失败,准确的说是fork创建子进程失败。 2.shell执行最后一条语句的状态值放在返...

  • Linux系统下C语言如何调用scalapack中的函数

    2017-09-08 - 在并行计算中经常需要调用scalapack(并行化的lapack)函数库里面的函数进行编程,这里简单介绍在C语言如何调用scalapck中的矩阵向量乘的函数。 注意:scalapack中的函数是用fortran写的,矩阵是按列进行存储的。 scalapack的链接需要用到blas,因此确保本机上...

  • Minikube:使用Kubernetes进行本地开发Minikube:使用Kubernetes进行本地开发

    2017-09-08 - 如果你的运维团队在使用 Docker 和 Kubernetes,那么建议开发上采用相同或相似的技术。这将减少不兼容性和可移植性问题的数量,并使每个人都会认识到应用程序容器是开发和运维团队的共同责任。 这篇文章介绍了 Kubernetes 在开发模式中的用法,它的灵感来自...

  • linux下strncasecmp的实现

    2017-09-07 - 看来strcpy的实现确实是太low了,腾讯的笔试字符串知识点考察就变了。 Linux下不区分大小写的字符串比较函数原型: int strncasecmp(const char *s1, const char *s2, register size_t n); 返回值: 如果相等返回0 如果s1s2,返回正整数 如果s1s2,返回负整...

  • 树莓派和其他arm开发板的本质区别树莓派和其他arm开发板的本质区别

    2017-09-06 - 我第一次听说树莓派时,并没有对它产生任何兴趣,因为对我来说这并不是一款新产品。在更早之前,我玩过 arm11 的开发板(S3C6410 系列),虽然和树莓派还是有区别的,比如体积更大、没有 HDMI 接口、自带触摸屏、价钱比树莓派稍贵等等,但我当时认为没有本质...

  • 适合教孩子编码的7款免费编程语言适合教孩子编码的7款免费编程语言

    2017-09-05 - 计算机编程是一项需求旺盛且欣欣向荣的事业, 所以这些日子父母们可能都希望他们的孩子长大后成为一名软件程序员。如果你先教你的小孩如何编程,该从哪儿开始呢? 可以尝试一下此列表中这些对儿童友好的编程语言以及工具。 1.Scratch(https://scratch.mit.edu...

  • 这可能是最全的计算机编程语言列表了这可能是最全的计算机编程语言列表了

    2017-09-03 - 计算机编程语言可用于将指令传达给计算机。它们基于某些句法和语义规则,定义了编程语言中每种结构的含义。 现在我得到了一个凡是可以找得到的每种编程语言的列表。我将它们分为以下几类: 一、解释型编程语言 二、函数式编程语言 三、编译型编程语言 四、过...

  • 模拟Linux修改实际、有效和保存设置标识

    2017-09-02 - 就是模拟setuid seteuid setreuid setresuid,感觉代码比书上大段的文字好记,就写成代码形式了。 // setuid.cc: 模拟unistd.h中的设置用户ID的方法的作用 #include stdio.h #include errno.h int real = 0; // 实际用户ID int effective = 0; // 有效用户ID...

  • 将socket程序从linux移植到windows上

    2017-09-02 - 今天突然想试下纯socket编程在两个系统上代码重合量有多大,只要不使用VC自定义的宏(比如SOCKET、SOCKADDR等等)感觉代码重合量挺大的。 比如最简单的TCP客户端和服务端对话,在VC中用int取代SOCKET宏,用struct sockaddr_in取代SOCKADDR_IN宏。 然后区别就...

  • linux保存的设置用户/组ID(set-user-ID)的测试linux保存的设置用户/组ID(set-user-ID)的测试

    2017-09-01 - 直接贴代码和结果: // FileName: id.cpp #include iostream #include unistd.h using namespace std; int main() { cout 进程ID: getpid() endl; cout 实际用户ID: getuid() endl; cout 有效用户ID: geteuid() endl; return 0; } 实际ID: root(0), xyz(1000...

  • 以Linux下的测试程序说明递归型互斥量和普通互斥量的区别

    2017-09-01 - 先贴代码和测试结果: // Mutex.h: 对pthread的互斥量的RAII包装 #ifndef _MUTEX_H_ #define _MUTEX_H_ #include stdio.h #include stdlib.h #include string.h #include pthread.h // 使用错误码errnum和字符串msg来打印错误信息, 并且退出程序 static inli...

  • 如何在linux下shell编写脚本中模拟键盘输入

    2017-08-27 - 做Docker构建镜像的练习,写了下面这个 Dockerfile 文件,其中 yum install tomcat 执行过程中需要用键盘输入两次字符y以便确认选项,Dockerfile 脚本命令如下: FROM centos MAINTAINER quicmous xuyeping@yeah.net RUN yes y | head -2 | yum install tomc...

  • 开发一个Linux调试器(五):源码和信号开发一个Linux调试器(五):源码和信号

    2017-08-27 - 在上一部分我们学习了关于 DWARF 的信息(http://www.linuxdiyf.com/linux/32098.html),以及它如何被用于读取变量和将被执行的机器码与我们的高级语言的源码联系起来。在这一部分(http://www.linuxdiyf.com/linux/31643.html),我们将进入实践,实现一些...

  • linux查看目录的剩余可用空间【shell脚本】

    2017-08-24 - Linux中暂时没发现现成的命令,因此可用用shell脚本结合df -h命令来实现 实现思路: 1、输入一个路径 2、获得df -h信息 3、保存根目录的可用空间大小 4、除了跟根目录之外的其他挂载目录匹配路径,如果匹配成功,取该路径的可用空间,或者取根目录的可用空间...

  • linux c/c++判断是否为中文(不包括中文符号,非正则)linux c/c++判断是否为中文(不包括中文符号,非正则)

    2017-08-24 - 在Linux环境下,c/c++默认的中文编码为UTF-8,中文的unicode编码是双字节的编码。有趣的是,windows环境下中文utf-8的编码为两个字节,而linux环境下UTF-8的为三个字节,而匹配中文使用正则表达式为 [\u4e00-\u9fa5] 无论你是怎么搜索,搜索出来匹配中文的正...

  • linux应用程序中设置RTC

    2017-08-22 - 接触过Linux的朋友们都知道,linux内部的时间分为系统时间和硬件时间。系统时间一般是在系统启动时读一下RTC,然后就依靠定时器维护的时间,这个时间的是掉电不保存的。而 硬件时间通常指的就是RTC,只要RTC有电池供电,这个时间是可以掉电保存的。 系统时间...

推荐教程
热点推荐