学Linux,上红联!
Linux系统教程_红联Linux门户
Linux帮助
  • 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有电池供电,这个时间是可以掉电保存的。 系统时间...

  • Linux启动代码boot.s理解

    2017-08-21 - 为了理解Linux的启动代码,我自己也照着书中抄了一遍。具体的代码如下: ; ; boot.s --bootsect.S framework ; .globlbegtext,begdata,begbss,endtext,enddata,endbss ;global flag .text begtext: .data begdata: .bss begbss: .text BOOTSEG = 0x07c0 entr...

  • 基于qt的arm与x86两种平台的opencv开发基于qt的arm与x86两种平台的opencv开发

    2017-08-18 - 最近折腾一些超级麻烦的东西,先是ros后是OpenCV的qt、ubuntu、树莓派、win各种乱七八糟的东西,简直是剪不断,理还乱。好了,废话不多说,直接上方案。 关于安装qt、opencv什么的我就不详细说了,这里提点一下。关于qt版本的问题,最好还是上qt5吧,虽然没q...

  • 使用Snapcraft构建、测试并发布Snap软件包使用Snapcraft构建、测试并发布Snap软件包

    2017-08-18 - snapcraft 是一个正在为其在 Linux 中的地位而奋斗的包管理系统,它为你重新设想了分发软件的方式。这套新的跨发行版的工具可以用来帮助你构建和发布 snap 软件包。接下来我们将会讲述怎么使用 CircleCI 2.0 来加速这个过程以及一些在这个过程中的可能遇到的...

  • 学习用Python编程时要避免的3个错误

    2017-08-16 - 当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python。 为了让初学 Python 的程序员避免犯同样的错误,以下列出了我学习 Python 时犯的三种错误。这些错误要...

  • linux终端关闭时为什么会导致在其上启动的进程退出?linux终端关闭时为什么会导致在其上启动的进程退出?

    2017-08-14 - 现象 经常在Linux下开发的人应该都有这样的经验,就是在终端上启动的程序,在关闭终端时,这个程序的进程也被一起关闭了。看下面这个程序,为了使进程永远运行,在输出helloworld后,循环调用sleep: 直接关闭这个终端,在另一个终端上查找该进程,已经找不...

  • 如何再Qt编程中识别是UTF-8还GBK编码

    2017-08-11 - 在最近的项目中,我们需要读取在mp3音乐文件中的metadata。如果大家有兴趣的话,可以参阅我的github项目: https://github.com/liu-xiao-guo/coverinfo 我们知道,现在的很多流行的软件都可以去修改一个mp3音乐文件的metadata里的内容,比如再Ubuntu平台上的...

  • linux上使用tshark运行lua脚本linux上使用tshark运行lua脚本

    2017-08-02 - 在这里[附1]我曾经介绍过在windows上面是如何实现批量的切流。因为windows终究不如Linux上面可以使用shell脚本来的方便,因此这次在linux上面又实现了一遍(然后还发现,针对同一个报文,linux的执行速度要比之windows快上不少),这里有些注意的地方做一下...

  • linux shell编程之产生真随机数(利用时间轴的办法)

    2017-08-02 - 众所周知,Linux自带的random实际上是一个伪随机,所以我这里用了一种新的办法来解决这个问题,那就是时间轴! 时间轴是怎么回事呢?每个时间都是不固定的,这个是不可预测的,因此是随机的,通过获得现在的时间然后将现在的时间换算成秒,然后通过求模运算...

  • linux脚本之提醒程序员及时来起身动一下

    2017-08-02 - 将这段代码保存,然后运行即可,就可以实现一个半小时,电脑右上角弹出来一个框提示您辛苦了需要休息的对话框消息。 代码如下: #!/bin/bash #while true #do realtime=`date +%H:%M` #echo 这条提供关键信息,时间为$realtime if test $realtime != 14:32 t...

  • linux生成连续时间戳linux生成连续时间戳

    2017-08-01 - 第一种: 代码如下: #!/bin/sh echo 打印今天之前连续的十个时间戳 TODAY_DATE=`date` date_range=$(seq 10) # 数组 #echo ${date_range[@]} for i in ${date_range[@]} do INSTANCE_DATE=`date -d ${TODAY_DATE} $i day ago +%Y%m%d`; echo ${INSTANCE_DAT...

  • Linux下使用OpenCV打开笔记本摄像头Linux下使用OpenCV打开笔记本摄像头

    2017-08-01 - 新建test文件夹,文件夹存在test.cpp和CMakeLists.txt test.cpp #include iostream #include string #include sstream #include opencv2/core.hpp #include opencv2/highgui.hpp #include opencv2/videoio.hpp using namespace cv; using namespace std; con...

  • 首页
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 下一页
  • 末页
  • 542148