红联Linux门户

Linux帮助
  • Linux中的EOF到底是什么?

    2016-07-09 - EOF 的定义 EOF 是 end of file 的缩写,表示文字流(stream)的结尾。这里的文字流,可以是文件(file),也可以是标准输入(stdin)。 以前在学习 C 语言文件操作的时候,一直记得 EOF 就是一个标记,通过它可以判断程序是否读取到文件的末尾了,例如下面...

  • 统计后缀名为.cc、.c、.h的文件数统计后缀名为.cc、.c、.h的文件数

    2016-07-09 - 在项目开发时,有时候想知道源码文件中有多少后缀名为.cc、.c、.h的文件。下面介绍Linux几种方法统计后缀名为.cc、.c、.h的文件数的方法。 我以python3的源代码为例,python3的源码共有文件数: 这段时间在学习python3,我就把它作为例子啦。感慨下:Python3...

  • linux模拟iic代码

    2016-07-09 - 因2440自带的IIC控制器本人用它作为从机使用,所以用GPIO模拟了IIC总线的主机模式。以下列出驱动代码和应用试验程序,总线模拟读写EEPROM。 1.底层驱动 /********************************* ** EEPROM模拟IIC总线 驱动程序 ** **版本:V1_0** **************...

  • Linux Dynamic Library (.so)使用指南Linux Dynamic Library (.so)使用指南

    2016-07-09 - 1. Dynamic Library的编译 假设我们有下面两个文件a.h, a.cpp,放在同一目录下。两个文件的内容分别是: // a.h extern C void foo(); // a.cpp #include iostream #include a.h using namespace std; extern C void foo() { cout a.foo endl; } 使用下面的...

  • 批量修改目录及其子目录的文件名(perl脚本)

    2016-07-09 - 功能:把当前目录及其子目录里的文件名批量修改。 #!/usr/perl #批量修改文件名 find_fileindir(.);#在当前目录执行 sub find_fileindir(){ local($dir) = @_; opendir(DIR,$dir|| die cant open this $dir); local @files =readdir(DIR); closedir(DIR); fo...

  • Python脚本后台运行的几种方式

    2016-07-08 - 最近写了控服务的脚本,需要在后台24小时运行。 环境:linux、脚本python、shell脚本 方法一:脚本后加 加了以后可以使脚本在后台运行,这样的话你就可以继续工作了。但是有一个问题就是你关闭终端连接后,脚本会停止运行; 如: [root@192 ~]# python updat...

  • Linux下的strerror是否线程安全?

    2016-07-08 - 下列是glibc-2.14中的源代码: char * strerror (errnum) int errnum; { char *ret = __strerror_r (errnum, NULL, 0); int saved_errno; if (__builtin_expect (ret != NULL, 1)) return ret; saved_errno = errno; if (buf == NULL) buf = malloc (1024);...

  • Linux上获取CPU Core个数的实现

    2016-07-08 - 可以通过多种手段取得CPU Core的个数,如: 1)、调用系统提供的函数get_nprocs(),可以在头文件sys/sysinfo.h中发现它。 2)、借助系统提供的sysconf()函数:sysconf(_SC_NPROCESSORS_CONF)、sysconf(_SC_NPROCESSORS_ONLN),get_nprocs()也有个相应的get_npr...

  • C/C++编程可用的Linux自带工具

    2016-07-08 - GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Solutions的程序员以Binary File Descriptor library(libbfd)所撰写。这个工具程序通常搭配GCC、make、和GDB这些程序来使用。 相关网址...

  • linux定时器的实现

    2016-07-07 - 一、setitimer函数实现 /*mul_timer.h*/ #ifndef _MUL_TIMER_H_ #define _MUL_TIMER_H_ #include sys/time.h #define MAX_TIMER_CNT 10 #define MUL_TIMER_RESET_SEC 1 #define TIMER_UNIT 1 #define MAX_FUNC_ARG_LEN 100 #define INVALID_TIMER_HANDLE (-1...

  • Linux下ioctl获取接口信息

    2016-07-07 - 一、ifconf和ifreq结构 //ifconf通常是用来保存所有接口信息的 //if.h struct ifconf { int ifc_len; /* size of buffer */ union { char *ifcu_buf; /* input from user-kernel*/ struct ifreq *ifcu_req; /* return from kernel-user*/ } ifc_ifcu; }; #de...

  • 在Linux系统下编译并执行C++程序在Linux系统下编译并执行C++程序

    2016-07-06 - 引言 为什么要在Linux下写程序? 首先要问一下自己,为什么要写这个程序。 如果我们写一个运行在windows平台的应用程序,那么用Linux写肯定是傻瓜或者强迫症,因为在windows平台调试windows程序可以更容易发现并解决问题,反过来也一样,在Linux平台调试出来...

  • linux上lseek的理解

    2016-07-06 - 每个打开文件都有一个与其相关联的当前文件位移量。它是一个非负整数,用以度量从文件开始处计算的字节数。系统默认当打开一个文件时,除非指定O_APPEND选择项,否则该位移量被设置为0。即始终指向下一个要读或写的位置。 lseek仅将当前的文件位移量记录在内...

  • iTOP 4412安装嵌入式linux编译环境

    2016-07-06 - 买了块开发板,提供的编译环境要求必须要是 win7 64bit ubuntu 12.04。正好我电脑装了win8.1 64bit ubuntu16.04,没办法只好自己重新安装编译环境了。 第一步,设置共享文件夹,试过了好多方法,没成功;临时找到个解决办法,通过优盘拷贝。 第二步,将讯为提...

  • 几个常用的Linux信号

    2016-07-06 - 1.SIGINT (2) 当用户想要中断进程的执行时,从控制终端发送SIGINT给进程。通常与Control-C关联。只能够结束前台进程。 2.SIGKILL (9) 立即杀死进程。该信号不能被进程捕获及忽略,并且收到该信号的进程没有机会执行清理工作。kill -9 pid。 3.SIGTERM (15) S...

  • linux信号处理--通过发送信号控制进程linux信号处理--通过发送信号控制进程

    2016-07-04 - 要求: 实现两个程序mysignal、mycontrl, mycontrl给mysignal发送SIGINT信号,控制mysiganl是否在屏幕打印hello,world字符串. //makefile .SUFFIXES: .c .o CC=gcc SRCS1=mysignal.c SRCS2=mycontrol.c OBJS1=$(SRCS1:.c=.o) OBJS2=$(SRCS2:.c=.o) EXEC1=mys...

  • 如何快速从Eclipse转向IDEA如何快速从Eclipse转向IDEA

    2016-07-04 - 在我认为开发工具各有长短,我之所以从Eclipse平台转向IDEA的主要原因是在从事Android的开发工作中,Google已经不再支持ADT的更新了。除这个理由之外,也是想借此换个开发环境IDEA的黑色主题很棒,界面要美观的多。 1.Eclipse和Idea原生快捷键对比(常用) 2...

  • linux,Mac下lu一把linux,Mac下lu一把

    2016-07-03 - 习惯Terminal没有不知道ls命令的(等同于DOS的dir),经常只是需要查看目录的内容大小,但ls -h显示的只是目录的本身大小,而且很多项内容. ls 在这方面的两个诟病出现了: 小诟1. 显示的信息很全,我们只提取Size和Name两列,分别是第5和9列 但是发现不对,...

  • lz:linux ls变种,只显示大小和名称(包括目录)lz:linux ls变种,只显示大小和名称(包括目录)

    2016-07-03 - 测试环境为:Ubuntu 14.14.2 LTS updates 主要解决了特殊用法(为制定参数,. ,..,*的使用) -d 检测是否为directory时,如果参数为空,也会被错误的认为目录,这是bash的一个诟病吗?应该吧,不过结合-z选项就可以解决。但是问题的关键是我以为-d是会识别...

  • shell脚本中$@与$#区别shell脚本中$@与$#区别

    2016-07-03 - $@:表示所有脚本参数的内容 $#:表示返回所有脚本参数的个数。 示例:编写如下shell脚本,保存为test.sh: #!/bin/sh echo number:$# echo argume:$@ 执行脚本: ./test.sh first_arg second_arg 说明:给脚本提供了两个参数,所以$#输出的结果是2,$@代表了...

  • java执行linux命令获取MAC和ip地址

    2016-07-02 - /** *获取linux Ubuntu网卡的mac地址 */ public static String getmacAddressByLinux(){ String mac = ; String[] commands = new String[]{/bin/bash, -c, ifconfig eth0|grep HWaddr|awk -F {print $5}}; try { mac =RmtShellExecutor.execArrayCmdRetrun(...

  • 【Linux】理解setuid()、setgid()和sticky位【Linux】理解setuid()、setgid()和sticky位

    2016-07-01 - Linux SETUID机制 (1)进程运行时能够访问哪些资源或文件,不取决于进程文件的属主属组,而是取决于运行该命令的用户身份的uid/gid,以该身份获取各种系统资源。 (2)对一个属主为root的可执行文件,如果设置了SUID位,则其他所有普通用户都将可以以root身...

  • Linux含交互的自动登录脚本

    2016-07-01 - 近来经常要通过ssh登录服务器,每次输入命令和密码很麻烦,查资料发现有两种解决,一种是本地创建密钥直接登录,另一种是写个脚本。 这里介绍第二种方法,第一种资料也很多,但是觉得没啥意思。 先上脚本: #!/usr/bin/expect -f spawn ssh username@server_...

  • linux下实现多线程拷贝命令

    2016-07-01 - 实现多线程拷贝命令,如:./multithread_copy srcfile destfile N(拷贝线程个数) 难点: 内存映射mmap。 给每一个线程合理的分配任务。 多线程的实现。 具体的实现代码如下: /********************************* File Name: multithread_copy.c Author: lu...

  • linux recv函数返回值分析

    2016-07-01 - 函数原型: ssize_t recv(int sockfd, void *buf, size_t len, int flags); 该函数第一个参数制定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明缓冲区buf的长度; 第四个参数一般置0; (标志位) rec...

  • Linux kernel-CPU调频

    2016-06-29 - 调频文件节点 ll /sys/devices/system/cpu/cpu0/cpufreq/ -r--r--r-- root root 4096 2016-06-29 10:28 affected_cpus -r-------- root root 4096 2016-06-29 10:28 cpuinfo_cur_freq -r--r--r-- root root 4096 2016-06-29 10:28 cpuinfo_max_freq -r--r--r...

  • Sublime text 3编译环境配置C++11Sublime text 3编译环境配置C++11

    2016-06-29 - 关于Sublime text3配置编译环境使其支持C++11,在网上找了很多,却发现大部分材料都对Linux和Windows下的环境配置没有做区分,无独有偶在网上找到了一个老外写的有关配置sublime Text3 的内容,十分详细,而且还可以解决在sublime text下编译运行C++不能输入...

  • Linux GCC开发入门--使用makefile命令行编译Linux GCC开发入门--使用makefile命令行编译

    2016-06-29 - 最近要进行Linux 下编写一个视频处理的程序。以前没有接触过linux开发,现在将自己每一步的过程,记录下来。不够肯定会有很多错误了。以后慢慢修正了。 1.安装 Linux-- Ubuntu 16.04 LTS. 2.开发环境:网上推荐的很多,自己认为codeblocks, eclipse 比较好。...

  • Linux下模块编译MODPOST 0

    2016-06-28 - 一般来说出现MODPOST 0情况的时候基本是 Makefile的格式问题,例如声明变量的时候没有Tab 又或者对应的接口变量没有设置好 obj-m 之类的。 然后就是编译这种不同版本的模块的时候大可不必上kerne.org的官网上下kernel源码 若是centos redhat 或者 fedora 可...

  • Linux内核发包工具pktgen

    2016-06-27 - 什么是 pktgen pktgen 是一款 Linux 发包工具,可在内核高速发包。 Linux packet generator is a tool to generate packets at very high speed in the kernel. 使能 pktgen 内核配置文件开启 CONFIG_NET_PKTGEN,通过查看是否有 /proc/net/pktgen/ 目录确认...

  • Linux动态加载内核模块

    2016-06-24 - Linux属于单内核,为了弥补单内核扩展性与维护性差的缺点,Linux引入动态可加载内核模块,模块可以在系统运行期间加载到内核或从内核卸载。模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间...

  • linux密码输入显示*

    2016-06-24 - 搜到的大多是不显示*的,有些是显示*但是无法使用退格键,或者中断。故自己参考修改实现: #include stdio.h #include termios.h #include unistd.h int getch(void) { struct termios tm, tm_old; int fd = STDIN_FILENO, c; if(tcgetattr(fd, tm) 0) retur...

  • linux实用技巧:你该使用ctags查找源码了linux实用技巧:你该使用ctags查找源码了

    2016-06-23 - 1.ctags简介: 哦,这个多的文件,我该如何去查看XX函数的实现!相信这是很多朋友的抱怨。太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定...

  • shell实用脚本:批量拷贝相同类型的文件shell实用脚本:批量拷贝相同类型的文件

    2016-06-23 - 思路 在一个目录中,可能有多个不同类型的文件,我们想要抽取中其中的一部分,然后拷贝到其他的目录中或者其他主机中,这个操作在现实工作中非常常见,比如日志的迁移等。这里的要点是要在指定目录的全集中找到所有匹配的文件。分为两个操作: 1.全集的遍历...

  • 用python计算md5,sha1,crc32

    2016-06-22 - Linux下计算md5sum,sha1sum,crc: 命令 输出 $md5sum hello f19dd746bc6ab0f0155808c388be8ff0 hello $sha1sum hello 79e560a607e3e6e9be2c09a06b7d5062cb5ed566 hello $crc32 hello 327213a2 Python也能做这个工作,其中md5和sha1需import hashlib, crc32...

  • shell脚本小工具之万能解压和压缩器---实现思路

    2016-06-22 - 本人也是接触linux很久了。但是对系统的架构也是一知半解,平时的使用情况也就是一键安装lnmp,顶多装redis,自己一直都专注于web开发,很少去接触系统运维方面的知识。一直觉得linux是一个很高大上的系统,一出错我根本无从下手。我花了近一周时间去学习she...

  • linux下inotify的使用

    2016-06-21 - 有时候我们需要检测某个目录下文件或者子目录的改动状况,如添加、删除、以及更新等,Linux系统上提供了inotify来完成这个功能。inotify是在版本2.6.13的内核中首次出现,现在的发行本应该都包含这个系统调用了。 下面的描述中的文件如无特别说明包括文件以...

  • Shell中#*/和%/*是什么意思?

    2016-06-21 - shell中有许多奇特的语法: 比如有以下一段脚本; #!/bin/sh files=`find -name *.conifg` for i in $files do name=${i#*/} dir=${name%/*} done name和dir都代表什么呢? 假如: i=this/is/a/path.config 那么: name=is/a/path.config dir=this/is/a 也就...

  • 分析代码的利器-ctags

    2016-06-21 - 比如我们在分析代码的时候,需要看某一个方法或类的定义,我们需要暂时跳转过去看一下,然后还能很方便的回来,这时候ctags就派上用场了。 比如你有一个src文件夹,先用ctags对其生成索引: ctags -R src 然后你会发现在当前目录下生成了tags文件,里边存储...

  • Hello World_Linux篇——测试gcc和g++是否可用

    2016-06-21 - 由于公司需要,有一些WINDOWS下的程序要转到Linux系统下完成,今天初步搭建了Linux系统(ubuntu-16.04-desktop-i386),系统自带了g++和gcc的编译器,现在测试一下是否可用。 gcc和g++分别是编译.c和.cpp源代码的编译器。 (1)command --version可查看应用...