红联Linux门户

Linux帮助
  • 使用ltrace定位内存泄漏-Linux

    2016-08-14 - ltrace和strace是Linux上常用的调试工具:strace跟踪用户程序的系统调用;ltrace跟踪动态库函数的调用。 本文介绍怎么使用ltrace找到内存泄露-调用了malloc而没有调用对应的free函数释放内存。 看下面一段无意义的代码: #include stdlib.h #include stdio....

  • 外部程序(可执行文件)调用的一些问题

    2016-08-14 - 第一个问题:c/c++中调用外部程序 在写程序的时候难免会遇到需要调用外部程序或别人写好的可执行文件,当编程工具为c/c++时,通过使用system()函数,或exec家族函数可实现对外部可执行文件的调用。如果使用execlp()函数,会出现一个问题,那便是当execlp...

  • bash脚本编程利用“=”赋值时,左右不能留空格

    2016-08-14 - 对脚本变量用=赋值时, = 左右不能留有空格,否则会提示错误。 比如以下例子: #!/bin/bash BEGIN_TIME = `date +%H:%M:%S` ./a.out END_TIME = `date+%H:%M:%S` echo 程序开始时系统时间为 echo $BEGIN_TIME echo 程序结束时系统时间为 echo $END_TIME 在将...

  • Linux下GNU Readline库函数安装用于实现shell内嵌补全

    2016-08-13 - GNU Readline库函数安装 该库可以在ubuntu下自动安装,这里给出安装代码: sudo apt-get install libreadline6-dev 执行这段代码,Readline库就已经安装好了。 由于这个库为动态库,所以在链接时要对其进行链接,先用命令找到其目录: ldconfig -p | grep re...

  • Linux--内存控制之oom killer机制及代码分析

    2016-08-13 - 最近,线上一些内存占用比较敏感的应用,在访问峰值的时候,偶尔会被kill掉,导致服务重启。发现是Linux的out-of-memory kiiler的机制触发的。 oom kiiler会在内存紧张的时候,会依次kill内存占用较高的进程,发送Signal 15(SIGTERM)。并在/var/log/message...

  • Python 3:加密简介Python 3:加密简介

    2016-08-12 - Python 3 的标准库中没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto 和 cryptography 上。我们将学习如何使用这两个库,来加密和解密字符串。 哈希 如果需要用到安全哈希...

  • Python学习:urllib简介Python学习:urllib简介

    2016-08-09 - Python 3 的 urllib 模块是一堆可以处理 URL 的组件集合。如果你有 Python 2 的知识,那么你就会注意到 Python 2 中有 urllib 和 urllib2 两个版本的模块。这些现在都是 Python 3 的 urllib 包的一部分。当前版本的 urllib 包括下面几部分: urllib.request...

  • Linux Kernel模块内存泄露的一种查找思路

    2016-08-09 - 一.问题描述 最近有个客户报了一个问题:如果运行我们的产品,则每天将会增长大概30M的内存,大概4个多月内存就会耗...

  • linux下简单对拍shell脚本

    2016-08-09 - 1.数据创建 datamaker.cpp: #include bits/stdc++.h using namespace std; typedef long long int ll; ll rget( ll a, ll b) { return (rand() % (b - a) ) + a;//产生范围为 [a, b]的随机数 } int main() { srand( (unsigned int) time( NULL ));//以时间为...

  • shell脚本:将指定目录下的执行文件的结果写入指定文件中

    2016-08-09 - 这个脚本使我写的第一个真正有用的脚本,折腾了半天。主要可以实现的功能就是: 1、得到一个路径下的所有文件夹名。 2、在得到子路径下的文件夹名。 3、得到该路径下的所有文件名。 4、在制定位置创建文件。 5、将指定路径下的二进制文件执行的结果写入指定...

  • freescale imx6 linux gpio中断驱动freescale imx6 linux gpio中断驱动

    2016-08-08 - 今天上班写了个小代码,用于检测掉电处理。当主控CPU的GPIO_7_11被拉低的时候,则触发中断,表明发生了外部掉电事件。 其原理图如下: 一个三极管,左边是一个外部信号,当POW_SW为高的时候,表明IMX CPU外部供电断开了。此时PMIC自动切换到电池供电。 就这...

  • linux下实用工具,从编译的C文件中找出指定的函数或者其他字符串

    2016-08-08 - 最近在写代码的时候,需要更改SDK中的函数mxc_iomux_v3_setup_pad,在linux kernel中多次用到了这个函数,且SDK中frescale imx的姊妹平台很多,很多没有用到的c文件都用到了这个函数。在改之前为了评估工作量,看看总共有多少有效的地方引用了该函数,就写了...

  • Linux网络编程之简易的点对点聊天程序Linux网络编程之简易的点对点聊天程序

    2016-08-08 - 本程序基于上一篇echo_server(http://www.linuxdiyf.com/linux/23013.html)的实现,稍作修改,增加了发送消息,服务端客户端各自运行两个进程,一个进程负责发送消息,另一个进程负责接收消息。 代码如下: p2p_server.c: #include sys/socket.h #include...

  • X86架构和linux系统中局部变量压栈、弹栈的区别

    2016-08-06 - 今天碰到局部变量的生命期、存放位置等问题,于是查了一下资料并在windows和Linux下以相同的代码验证一些想法。 切记切记,堆栈不是同一样东东,栈和堆都属于动态存储区的,栈存放函数的返回地址、参数和局部变量。 各类段在内存中分配的位置跟硬件架构和操...

  • linux mprotect修改用户态内存的方法

    2016-08-06 - 一.简述: linux内核有时候需要修改用户态的内存,或者从用户态拷贝数据。由于linux内核态和用户态内存有各自的分区,不能相互直接访问,所以: 当用户态态需要访问内核数据时,需要在内核用copy_to_user来吧内核数据拷贝到用户态 当内核态需要访问用户态数...

  • 停止一个java的线程执行

    2016-08-05 - 找了一个停止线程运行的方法,代码如下: public class stopThread extends Thread { private volatile boolean stop = false; @Override public void run(){ System.out.println(t1 is start...); while(!stop){ System.out.println(t1 is running....); }...

  • Linux网络编程之echo server的实现

    2016-08-05 - 网络编程第一步,先实现一个echo server 一个echo server程序包含两部分 * 客户端 * 服务端 这里,服务端相对于客户端的代码要多一些。 这里简单说一下代码结构: 服务端 1.socket 2.bind 3.listen 4.accept 5.循环读写 6.关闭连接和套接字 客户端(相对比较...

  • Go起步:开发环境的配置--Windows和LinuxGo起步:开发环境的配置--Windows和Linux

    2016-08-04 - GO是google发布的一款开源编程语言。正如去官网所说的那样Go是一个开源编程语言,可以很容易地构建简单,可靠,高效的软件(Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.)。Go语言专...

  • Linux Cluster环境下批量分发执行补丁Linux Cluster环境下批量分发执行补丁

    2016-08-04 - 这两天做了一个需求,因为上一个版本的/tmp空间默认只分配了5G,而升级程序上传解压路径也是/tmp,且解压过程要占用5G左右的空间,这样就导致/tmp空间占满,解压失败,升级无法进行。后来想了一个办法,就是从/var建了一个软链接到/tmp,这样实际上升级文件...

  • Centos下Web中间件Jboss应用发布start和stop脚本范例

    2016-08-04 - 在centos环境部署jboss发布web应用,摸索了发布具体应用的start和stop脚本,范例如下: 1、start脚本:${JBOSS_HOME}/bin/start-app.sh export LANG=zh_CN.GBK cd /home/jboss/bin date=1_`date +%Y-%m-%d\ %H:%M`.log nohup ./run.sh -b 127.0.0.1 -c app l...

  • Qt-TCP-ModBus调试笔记Qt-TCP-ModBus调试笔记

    2016-08-03 - 继续上篇的Qt自带例程串口modbus调试(http://www.linuxdiyf.com/linux/22932.html)后进行的TCP-modbus调试,代码已经读的差不多,下篇会给出带码的简单注释。 1.调试环境 ubuntu16.04+Qt5.6.1,调试例程为Qt自带的slave和master两个程序,分别作为tcp-modb...

  • linux c:关联变量的双for循环

    2016-08-02 - 举例说明: 比如打印一个倒三角形。 * * * * * * * * * * 第一层循环为行数,第二层循环为每行打印的*数,且随着行数的变化,打印的*数也随着改变。 这就是关联变量的双层循环。我的做法是,先设计第一层变量i=4;i=1;i--,这样就保证了4行的行数正确打...

  • 简单的模拟登录Wap版新浪微博

    2016-08-01 - 环境:Ubuntu 16.04 python版本3.5+ 代码开始: import requests, lxml from bs4 import BeautifulSoup from io import BytesIO from PIL import Image class SimulationLogging: # 构造data def structure_data(self): data = { remember: on, backURL: htt...

  • Linux虚拟地址空间布局Linux虚拟地址空间布局

    2016-08-01 - 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Addr...

  • 关于Linux系统basename函数缺陷的思考

    2016-08-01 - 某模块作为前台进程独立运行时,运行命令携带命令行参数;作为某平台下守护进程子进程运行时,需要将命令行参数固化在代码里。类似如下写法: char *argv[] = {./DslDriver, -t, /bin/VdslModemSco.bin}; int argc = sizeof(argv) / sizeof(argv[0]); 随后,...

  • FFmpeg编译安装脚本-CentOS

    2016-07-31 - 脚本代码: #!/bin/bash # ffmpeg installation script for centos # __author__ : Mansoor (digitz.org) function banner { echo -en +++++++++++++++++++++++++++++++++++++++++ + FFmpeg Installer for CentOS + +++++++++++++++++++++++++++++++++++++++...

  • 利用python数组解析ifconfig命令输出

    2016-07-31 - 有时候我们需要对命令的格式化输出进行解析,解析通常依赖命令自身的格式化特征,不过这些特征都有共性:各种层面的循环列表结构。 比如ifconfig命令,首先循环列出所有网络接口,然后在网络接口内,在循环列出各个预定义字段。 所以对该命令解析时,首先要...

  • 静态变量的用处:文件句柄的妥善放置

    2016-07-30 - 最近做的一个任务,是在一个线程中不断接收UDP包,并将包dump到文件内。 代码这么写: #include stdio.h #include unistd.h #include sys/syscall.h//Linux system call for thread id #include assert.h #include pthread.h void logMsg() { int loop = 0;...

  • Linux下获取线程ID的方法

    2016-07-30 - Linux下多线程程序发生coredump时,用: gdb /path/to/program/file core 可以看到所有线程: root@rubic:~/test/thread# gdb a.out core GNU gdb (GDB) 7.6.1 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or lat...

  • Shell中字符串分割的三种方法Shell中字符串分割的三种方法

    2016-07-30 - 问题:对于1,2,3,4,5这样的字符串输出采用,分隔开的1 2 3 4 5 特征:在字符串中没有空格 解决方法1: #!/bin/bash var=1,2,3,4,5 var=${var//,/ } #这里是将var中的,替换为空格 for element in $var do echo $element done 若原来字符串中有空格如:mark:x:0...

  • 使用python获取动态分配的ip地址并传给shell

    2016-07-29 - Linux下的很多软件要从环境变量里获取配置信息,有些环境变量好设置(比如某个目录),有些难设置,比如获取本机动态ip地址。 我采用的方法是,运行ifconfig eth0命令获取本机网卡eth0的配置信息,将输出的内容保存到临时文件,逐行读取该文件,读到第2行时...

  • 使用Python创建你自己的Shell(下)使用Python创建你自己的Shell(下)

    2016-07-29 - 在上篇(http://www.linuxdiyf.com/linux/22822.html)中,我们已经创建了一个 shell 主循环、切分了命令输入,以及通过 fork 和 exec 执行命令。在这部分,我们将会解决剩下的问题。首先,cd test_dir2 命令无法修改我们的当前目录。其次,我们仍无法优雅地...

  • 使用Python创建你自己的Shell(上)使用Python创建你自己的Shell(上)

    2016-07-29 - 我很想知道一个 shell (像 bash,csh 等)内部是如何工作的。于是为了满足自己的好奇心,我使用 Python 实现了一个名为 yosh (Your Own Shell)的 Shell。本文章所介绍的概念也可以应用于其他编程语言。 (提示:你可以在https://github.com/supasate/yosh...

  • Fedora内核是由什么构成的?Fedora内核是由什么构成的?

    2016-07-29 - 每个 Fedora 系统都运行着一个内核。许多代码片段组合在一起使之成为现实。 每个 Fedora 内核都起始于一个来自于上游社区(http://www.kernel.org/)的基线版本通常称之为 vanilla 内核。上游内核就是标准。(Fedora 的)目标是包含尽可能多的上游代码,这样...

  • 用python记录运行pid,并在需要时kill掉它们

    2016-07-29 - 我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是写了死循环,或直到分配给该进程的任务都跑完才退出的。如果我们想中途结束掉这些任务,是没办法手工一个一个...

  • JNA如何调用Linux下的so库文件JNA如何调用Linux下的so库文件

    2016-07-28 - 本文旨在介绍Java程序如何通过JNA调用Linux下的so库文件。对库文件的调用,也是Java编程者会经常遇到的问题。本文就以自身经验为基础,做一个简单的介绍。 相关工具: Eclipse开发工具,供编写测试程序。 Linux虚拟机,供测试使用。 Visual Studio 2010,供...

  • 自写项目——哈夫曼编译码及客户端服务端交互实现

    2016-07-28 - 1.项目要求 哈夫曼编译码 题目要求:编写一个用哈夫曼实现的编码压缩器,语言不限! 实现英文字符编译码的功能;实现译码的压缩解压功能;要有较美观的图形用户界面;从客户端发送一段字符给服务器端,服务器端能成功的返回这段字符经过哈夫曼编译码之后的结...

  • Linux输入设备驱动上报按键值方法

    2016-07-28 - input_set_capability和input_event以及input_sync函数实现Linux 输入设备驱动上报按键值方法: input_report_key 函数貌似也有人用,这个demo 看看先! static inline void input_report_key(struct input_dev *dev,unsigned int code, int value) { input_...

  • linux如何查看一个进程的堆栈

    2016-07-28 - 方法一:pstack pid NAME pstack - print a stack trace of a running process SYNOPSIS pstack pid DESCRIPTION pstack attaches to the active process named by the pid on the command line, and prints out an execution stack trace. If ELF symbols e...

  • linux下编写shell获取指定目录下的文件名

    2016-07-27 - linux下用shell获取指定目录下的文件名代码: #!/bin/sh #============ get the file name ===========# FolderPath=/home/data for fileName in ${FolderPath}/*; do tempFile=`basename $fileName` echo $tempFile done #================================...