红联Linux门户

Linux帮助
  • linux上静态库和动态库的编译和使用(附外部符号错误浅谈)linux上静态库和动态库的编译和使用(附外部符号错误浅谈)

    2017-02-20 - 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别。 1.静态库也被称为归档文件(archive,因此创建命令是ar),编译器和链接器负责将程序代码和静态库结合在一起组成单独的可执行...

  • Linux和Windows的遍历目录下所有文件的方法对比

    2017-02-20 - 首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止。最后用函数C释放资源。 1、打开目录 #include sys/types.h #include dirent.h DIR *opendir(const...

  • shell脚本之始shell脚本之始

    2017-02-20 - 世界上对 shell 脚本最好的概念性介绍来自一个老的 AT&T 培训视频(https://youtu.be/XvDZLjaCJuw) 。在视频中,Brian W. Kernighan(awk 中的k),Lorinda L. Cherry(bc 作者之一)论证了 UNIX 的基础原则之一是让用户利用现有的实用程序来定制和创建复...

  • 如何成为一名开源程序员

    2017-02-20 - 科技世界的探索总是让我们兴奋不已。很多科技日新月异,你探索得越深远,你看到的世界就越广阔无穷,这就像是一只驼一只的海龟一样。因此,科技世界也像宇宙一样无穷无...

  • Linux驱动手动绑定和解绑定

    2017-02-19 - Linux内核从2.6.13-rc3开始,提供了在用户空间,可动态的绑定和解绑定设备和设备驱动之间关系的功能。在这之前,只能通过insmod(modprobe)和rmmod来绑定和解绑,而且这种绑定和解绑都是针对驱动和所有设备的。而新的功能可以设置驱动和单个设备之间的联系...

  • Python实现Linux环境下的ls命令

    2017-02-18 - 在Linux下使用ls命令结合正则表达式,能够高效地进行文件搜索,并通过参数操作文件,于是就想用Python实现这个功能以便在Windows上使用。 import os import re import sys path = os.getcwd() substr = raw_input(The sub-string of the file (Support for R...

  • Linux C读取Key Code

    2017-02-18 - Linux下用C代码实现读取按键事件的key code。 #include stdio.h #include stdlib.h #include linux/input.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include errno.h #include sys/time.h struct timeval begin_time...

  • PHP执行Linux命令的两个有用的函数exec和shell_exec

    2017-02-17 - PHP中的exec和shell_exec两个函数都可以用来执行Linux命令,但它们在使用方式以及结果的返回上,差别还是比较大的。 exec 调用方式: exec($cmd. 21,$output,$status); $cmd:shell脚本 21:表示shell脚本执行过程中的错误信息会被输出 $output:数组格式,...

  • Linux shell if [ -n ]正确使用方法

    2017-02-17 - if [ str1 = str2 ] 当两个串有相同内容、长度时为真 if [ str1 != str2 ] 当串str1和str2不等时为真 if [ -n str1 ] 当串的长度大于0时为真(串非空) if [ -z str1 ] 当串的长度为0时为真(空串) if [ str1 ] 当串str1为非空时为真 shell 中利用 -n 来判定字...

  • Linux C/C++区别:类型声明、struct

    2017-02-16 - C有数组、结构体、指针、函数、宏 C++有命名空间、引用、默认参数、模板、函数重载、自定义操作符、内联、构造/析构、私有/保护成员、友元、异常。 一、数据类型的声明 1.C++允许数据声明出现在程序的任意位置 C代码(异常) #include stdlib.h #include std...

  • 被遗忘的桃源——flock文件锁被遗忘的桃源——flock文件锁

    2017-02-15 - 缘起 在后台开发中,随着多线程应用日益增多,人们对多进程的关注也在逐渐减弱。但是在实际应用中,多进程之间的通信及资源共享,还是会不时的遇到,如果不认真处理,就会出现数据异常,甚至导致系统资源耗尽的情形。今天,我在这里为大家介绍一下 flock 文...

  • 编程中的冰山理论——从RPM改变文件大小说起编程中的冰山理论——从RPM改变文件大小说起

    2017-02-15 - 你能看到的只是表面很少的一部分冰山理论。 在编程排查问题时,我们经常遇到的情形就是,看似一个很小的点,深究起来却发现其背后隐藏着更深层次的技术逻辑。昨天的上线经历让我深有体会。 昨日上线,一切如旧。云淡风轻,茶香四溢。 焚香,沐浴,更衣,食素...

  • Linux多线程“一写多读”模式下的无锁设计Linux多线程“一写多读”模式下的无锁设计

    2017-02-15 - 缘起 在Linux多线程环境下对同一变量进行读写时,经常会遇到读写的原子性问题,即会出现竞争条件。为了解决多个线程对同一变量访问时的竞争条件问题,操作系统层面提供了锁、信号量、条件变量等几种线程同步机制。如果对变量的每次访问都使用上述机制,由于...

  • Linux下Shell脚本的调试Linux下Shell脚本的调试

    2017-02-14 - 这篇博文是对Debugging Shell Scripts in Linux的翻译[附],希望能帮助到在Linux下写Shell脚本的童鞋。 大多数编程语言都有可用的调试工具,调试工具可用在执行程序或脚本的时候让你检查其内部是如何进行的。对于Shell脚本,我们没有任何可用的调试工具,唯...

  • Linux:shell脚本反复运行同一个程序Linux:shell脚本反复运行同一个程序

    2017-02-14 - 描述:写了一个检测脚本运行ffmpeg程序,当程序运行结束后继续运行该ffmpeg程序。 思路:起初想要持续检测正在运行的进程,如果进程正在进行就什么也不做,该进程结束就重启该进程。写的脚本如下: #!/bin/bash #sh kill.sh input=$1 output=$2 i=1 #check o...

  • Linux读取文件属性C接口测试

    2017-02-13 - 在Linux中,需要在C里面调用函数去检查文件状态。Linux中文件是否被修改过,我们可以通过读取文件属性,或者通过md5sum来检查文件是否被修改过。 这个代码是man 3 stat中的实例代码: #include sys/types.h #include sys/stat.h #include dirent.h #include...

  • 使用python实现openvpn的登录次数限制

    2017-02-12 - linux上搭建的openvpn使用mysql进行用户的验证 通过对openvpn日志的监控,实现对openvpn登录失败5次的用户进行锁定,一天后自动解锁 #!/usr/bin/env python3 #-*- coding:utf8 -*- 脚本对登录VPN失败次数超过5次的用户进行锁定 import time import re import...

  • 用于svn添加当前目录下所有未追踪的文件,和所有手动删除的文件

    2017-02-12 - 由于要经常用到类似与 git 中的 git add --all 这种操作,但是发现svn中并不支持类似的操作。 虽然可以使用 wildcard 进行匹配,但是 wildcard是在shell中进行匹配的,所以并不能递归地匹配到某个目录下所有的文件。 于是,参考网上的一些讨论,写了以下两个...

  • Linux机器添加互信脚本

    2017-02-11 - SUSE机器添加互信: #!/bin/bash num=1 nump=$nump for i in cat ip.txt do echo ip:$i paswd=sed n $nump paswd.txt echo passwd:$paswd /usr/bin/expect EOF set timeout -1 spawn ssh-copy-id i /root/.ssh/id_rsa.pub root@$i expect *(yes/no)? {send y...

  • Caffe:如何将图片数据转换成lmdb文件Caffe:如何将图片数据转换成lmdb文件

    2017-02-11 - 1、图片信息的转换 在caffe中经常使用的数据类型是lmdb或leveldb;不是常见的jpg,jpeg,png,tif等格式;因此,需要进行格式转换,通过输入你自己的图片目录(下有的大量图片)转换成一个lmdb库文件输出;这个过程一般由caffe工具convert_imageset完成,该工具在...

  • Linux shell读取一个data文件,扫描其中的一个内容

    2017-02-10 - 程序功能:首先要读取一个data文件(很大),扫描出fr=..(文件中fr大概只有7种,并且某几种的value还有空值的情况。要处理空值 同时删除重复的内容)【为什么我觉得我没表达清楚。】 代码如下: rz filename #先将所要处理的文件上传到服务器(此处是data文件)...

  • 把rm替换为mv

    2017-02-10 - Linux上使用rm很危险,刚刚不小心删除了一个还有用的文件。因此我们可以把rm指令替换为mv,执行后把要删除的文件保留到一个目录下,定期清理就好了。 把下面的代码粘贴到你的.bashrc或。zshrc下。注意root下的也要粘贴。 # for rm {{ # mkdir ~/.delete, whe...

  • linux内核capable源代码分析

    2017-02-09 - linux内核里对于进程的权限管理有一个很重要的函数capable,以前看了好多遍,今天下决心搞定他,也在此立下一个碑,以后有谁想搞明白他的话,我还可以提供一些帮助。 capable函数定义在kernel/capability.c,作用是检验当前进程有没有相应的权限,定义如下:...

  • linux驱动模块访问权限的控制

    2017-02-09 - 简述: 在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。 权限控制接口: bool capable(int cap); 定义头文件: #include linux/capability.h 用法例子: if (! capable (CAP_SYS_ADMIN)) return -EPERM; capable()没有权限时返回...

  • linux驱动访问文件linux驱动访问文件

    2017-02-09 - 简述: 使用filp_open()和struct file可以在驱动模块中访问其他文件。 定义的头文件: #include linux/fs.h 例子: #include linux/fs.h #include asm/uaccess.h static char buf[100]; static int __init dopen() { mm_segment_t old_fs; ssize_t ret; stru...

  • linux内核调试+qemu+eclipselinux内核调试+qemu+eclipse

    2017-02-09 - 一、调试环境: 在ubuntu16.04下,在虚拟机里边运行的ubuntu,装32位的运行较快,选择较新的ubuntu版本是因为安装qemu、eclipse比较简单,在安装软件上节约时间。 二、安装的软件 1.安装qemu相关软件:sudo apt-get install kvm qemu libvirt-bin virtinst v...

  • 获取机器sn码 windows/linux

    2017-02-08 - 更新: windows获取方法: 执行命令: wmic bios get serialnumber Linux获取方法: 执行命令: dmidecode | grep Serial Number: | grep -v Not | head -n 1 | awk { print $3 } 以上环境为windows dell服务器,linux hp服务器。 linux获取可以用dmidecode。 win...

  • Linux C读取文件夹下所有文件(包括子文件夹)的文件名Linux C读取文件夹下所有文件(包括子文件夹)的文件名

    2017-02-07 - Linux C下面读取文件夹要用到结构体struct dirent,在头#include dirent.h中,如下: #include dirent.h struct dirent { long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen...

  • C/C++获取文件夹下所有文件名 windows和linux通用

    2017-02-07 - 利用C/C++编写程序以获取文件夹内所有子文件名,以下程序参考网络上诸多文章: 头文件如下: #include iostream #include stdlib.h #include stdio.h #include string.h #ifdef linux #include unistd.h #include dirent.h #endif #ifdef WIN32 #include dir...

  • Linux应用层中的setitimer的使用说明

    2017-02-07 - 使用时需要引入的头文件: #include sys/time.h setitimer函数原型: int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value); 其中which参数表示类型,可选的值有: ITIMER_REAL: 以系统真实的时间来计算,它送出SIGA...

  • linux opencv调用手机摄像头

    2017-02-06 - 手机端安装IP摄像头。 先上源码: #include cv.h #include highgui.h #include iostream int main(int, char**) { cv::VideoCapture vcap; cv::Mat image; CvCapture *capture ; const std::string videoStreamAddress = http://10.133.225.11:8080/video; i...

  • 在Linux中如何使用gdb调试C程序

    2017-02-05 - 无论多么有经验的程序员,开发的任何软件都不可能完全没有 bug。因此,排查及修复 bug 成为软件开发周期中最重要的任务之一。有许多办法可以排查 bug(测试、代码自审等等),但是还有一些专用软件(称为调试器)可以帮助准确定位问题的所在,以便进行修复。...

  • shell同步本地多项目代码仓库

    2017-02-04 - 用因为本地项目有多个仓库项目依赖, 所以需要经常更新本地仓库. 写了一个shell来同步不同的仓库的不同分支. 代码如下, 修改git_proj_folders 和 git_folder_branch, git_remote_project 来匹配你本地的仓库的 文件夹名(项目名), 项目分支名, 项目仓库地址别...

  • linux下调用openssl实现获得文件MD5值

    2017-02-04 - 在网上找了好久都找不到一个简洁完整的用代码实现计算文件MD5值得示例,所以牛刀小试自己写一个; 使用库前,可能需要预先安装openssl的RPM包。 使用的openssl库所调用的函数有三个(可以在头文件md5.h中查看即:/usr/include/openssl/md5.h): int MD5_Init...

  • Linux:uwsgi自动化脚本Linux:uwsgi自动化脚本

    2017-02-04 - uwsgi默认情况下,启动之后,只能使用kill进行关闭,为了使uwsgi的启动关闭和Linux中其它服务一样,可以使用shell脚本进行配置,脚本如下: vim testshell/uwsgiC.sh #!/bin/bash if [ ! -n $1 ];then #$1:指该脚本后跟的第一个参数,-n:判断$1是否为非空...

  • linux3.4.2内核定时器time_list的使用

    2017-02-04 - 在有些驱动程序中,我们需要用定时的功能去扫描一个硬件,或者说成去执行一个函数,那么我们可以采用内核动态定时器: struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct list_head entry;...

  • linux下gtk+一个将字符串大写化的小示例linux下gtk+一个将字符串大写化的小示例

    2017-02-03 - 首先用glade画图形界面: 并且设置gtk元素名称(ID)以及设置事件回调函数。 下面写代码: #include gtk/gtk.h #include string.h #define UI_PATH ./entry.ui #define MAIN_WINDOW window #define CHK_EDITABLE chk_editable #define CHK_VISIBLE chk_visible...

  • 基于Linux的Shell脚本合集链接(github链接)基于Linux的Shell脚本合集链接(github链接)

    2017-02-02 - 前言 本篇主要是将我这一段时间编写的脚本,在这里整理列出,便于需要的朋友查阅。部分github项目相关的内容我也有对应的博客,会在后面列出的。 欢迎各路大神批评指教。 基于Linux的nginx相关shell脚本项目 nginx 服务启动脚本,可直接复制到 /etc/init.d/...

  • apt一键下载所有依赖的包apt一键下载所有依赖的包

    2017-01-31 - 无外网的局域网安装软件一个烦人的事件就是明明安装包下好了,但有时候就是安装不上,因为缺少相应依赖的包。 那么如何将一个软件依赖的包、库之类的下载下来呢。 这里就用到apt的相关功能。 方法 首先,找包。找到依赖的包用apt-cache depends packname来获...

  • Gamit解算脚本Gamit解算脚本

    2017-01-30 - 这是一个解算单天的shell脚本,对于初学者很有帮助。 首先就是需要在项目(四个字符)建立rinex brdc igs 还有以年纪日命名的目录,然后提前准备好station.info和lfile.文件,以及将tables表更新,然后将脚本放在以年纪日命名的目录中,执行即可。 #!/bin/b...