红联Linux门户

Linux帮助
  • Linux下子线程exit code在主线程中的使用

    2016-12-12 - Linux线程函数原型是这样的: void* thread_fun(void* arg) 它的返回值是 空类型指针,入口参数也是 空类型指针。那么线程的 exit code 也应该是 void * 类型的。但是在主线程怎么捕获子线程的 exit code 并使用的呢? 捕获的思路如下: 1.在主线程中定义一...

  • linux通过/sys/class/gpio文件操作gpio的shell脚本linux通过/sys/class/gpio文件操作gpio的shell脚本

    2016-12-12 - 参考: 这里还有找到一篇通过文件IO操作的(http://www.linuxdiyf.com/linux/23872.html),以后写程序会用到,先记着。 1.首先查看系统中有没有 /sys/class/gpio 这个文件夹。如果没有请在编译内核的时候通过make menuconfig加入 Device Drivers GPIO Suppo...

  • 通过Java实现Linux系统下grep指令的功能通过Java实现Linux系统下grep指令的功能

    2016-12-12 - 在Linux系统下grep指令常见的使用方式有如下两种: 1.grep pattern files 搜索 files 中匹配 pattern 的内容 2.grep -r pattern dir 递归搜索 dir 中匹配 pattern 的内容 现有如下方法可实现在Windows系统下通过Java代码实现与第一种使用方法相同的功能: im...

  • Linux的线程创建限制Linux的线程创建限制

    2016-12-12 - 现网有个版本上线一段时间后,通过SSH重新登陆时显示Cannot allocate memory错误,结果只能通过重启机器来恢复服务。通过分析发现是新的版本引入一个bug,某个进程会不停地创建新的线程,那么问题是Linux下一个进程可以创建多少个线程,从而会导致这个错误出...

  • 理解Linux的memory overcommit理解Linux的memory overcommit

    2016-12-12 - Memory Overcommit的意思是操作系统承诺给进程的内存大小超过了实际可用的内存。一个保守的操作系统不会允许memory overcommit,有多少就分配多少,再申请就没有了,这其实有些浪费内存,因为进程实际使用到的内存往往比申请的内存要少,比如某个进程malloc(...

  • 脚本编译和运行Java程序探索结果

    2016-12-12 - 今天因为一个验证工具的易用性问题进行了讨论,决定把这些Java程序制作成可以使用的工具分别在window和Linux系统运行,方便测试人员对问题进行验证。 首先完成的是window系统下的编译和运行,直接使用javac编译脚本进行简单的编译,接这制作了运行脚本,方便...

  • linux:获取监听指定端口的进程PID

    2016-12-12 - 在 linux 下经常需要杀死(重启)监听某端口的进程, 因此就写了一个小脚本. 通过 ss 命令获取监听制定端口的进程 PID, 然后通过 kill 命令结束掉进程: #!/bin/sh # set -x function get_pid_by_listened_port() { [[ $# -lt 1 ]] { echo param error: must hav...

  • 使用fabric来验证linux账户

    2016-12-12 - 验证Linux用户,Python有自带的包python-pam,用法简单,但是有个问题就是无法验证root的用户,所以只能用fabric来代替,当然用fabric来验证的必须保证对方ssh已经打打开了,不然无法验证,闲话少说,代码如下: from fabric.api import env, run, warn_only...

  • 嵌入式系统中如何使用printf函数进行串口输出

    2016-12-11 - 问题:嵌入式系统中如何使用printf函数进行串口输出。 解答:寄存器版的/库函数版的。 第一步,#inlcude stdio.h 第二步,在主函数文件中重写fputc()和fgetc()函数,如下: int fputc (intch,FILE*f) { while(!(USART1-SR USART_FLAG_TXE)); USART1-DR =(ch...

  • 如何在Linux中启用Shell脚本的调试模式

    2016-12-11 - 脚本是存储在一个文件的一系列命令。在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。 在学习脚本或写脚本的初期阶段,我们通常从写小脚本或者几行命令的短脚本开始...

  • 系统编程中的文件大小修改truncate/lseek系统编程中的文件大小修改truncate/lseek

    2016-12-08 - 思维导图 文字说明 lseek函数虽然可以扩展文件大小,但是与文件系统实现机制有关,在指定偏移量超过原文件大小的时候,会产生空洞,但是最后关闭文件的时候,内核是否把这些空洞写入到磁盘区块,则不是一定的,很多时候只扩展你实际写入的字节数!并不是在指...

  • 查找C程序中的"if", "else", "for"等的出现次数查找C程序中的"if", "else", "for"等的出现次数

    2016-12-08 - 任务和代码: 编写一个程序并取名test.c,统计该文件中出现if,while,for的次数。 /* *Copyright (c) 2016, CSDN学院 * All rights reserved. * 文件名:main.c * 作者:DylanLiu * 完成日期:2016/15/8 * 版本号:V1.0 * * 问题描述:一个c语言的简单的编译器。 *...

  • 函数fork()与vfork()的对比函数fork()与vfork()的对比

    2016-12-07 - 下面这篇文章中有关于这两个函数的对比: 但是例子中有一个明显的错误,今天实验测试中有所发现。 在使用前者的时候 父子进程之间是相对独立的空间,无论是全局变量还是局部变量都是保持了良好的独立性。 在使用后者函数的时候,父子进程之间只是共享全局变...

  • 如何定制嵌入式Linux发布版如何定制嵌入式Linux发布版

    2016-12-07 - 1).简介 针对嵌入式系统预编译Linux镜像和发行版在创客运动中已经很普遍,这些发行版本已经包含组件(有时候可能超过必需的),因此学生和业余爱好者们可以很容易的开始开发。Ubuntu, Debian和Arch都属于这样的发行版。 可是,当我们需要在计算机模块或者工...

  • VS+VisualGDB编译调试Linux程序VS+VisualGDB编译调试Linux程序

    2016-12-06 - 1,下载VisualGDB,安装 http://pan.baidu.com/s/1hsmJ5Gg 2,启动VS新建VisualGDB--Linux项目 接下来一路next,就完成项目创建。 可以看到: Windows本地项目目录:G:\SVN_Code\Linux\LinuxProject2\LinuxProject2 Linux远程项目目录:/tmp/VisualGDB/g/SVN...

  • 用shell脚本来实现日历的屏幕控制用shell脚本来实现日历的屏幕控制

    2016-12-06 - 首先什么是脚本? 脚本语句由Linux系统解释执行.脚本由脚本语言与可执行的二进制文件或命令组成,因此,脚本是不需要再编译链接的.为了与高级语言源程序加以区别,Linux中将其称为脚本。 应用题目:创建一个脚本文件file.sh完成以下功能。 1:屏幕显示如下: 2:...

  • Linux下51单片机的led点亮Linux下51单片机的led点亮

    2016-12-06 - Linux下LED 点亮实验 1.装有SDCC交叉编译环境,以及Python 的烧写工具。 2.设备 单片机开发板 1 个,USB 数据线 1 根,跳线帽 1 个。 3.内容 使用 python下软件进行编写、编译程序; 用跳线帽将 J3 短接,下载程序,观看 LED 状态。 4.原理 LED 发光二极管具有单项...

  • Linux下防止程序挂掉的shell脚本

    2016-12-06 - 在一个实际项目中,很多时候需要保证程序或软件总是运行的,只有这样才能将相关损失降至最低;可是实际中由于软件自身质量和外部因素,很难保证程序持续运行的,此时就需要写一个程序或者脚本,用来监控目标程序,只要发现目标程序挂掉了该脚本就在此让其运...

  • 在Linux中如何利用backtrace信息解决问题在Linux中如何利用backtrace信息解决问题

    2016-12-06 - 一、导读 在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语言程序的时候会深有体会,它们通常在出问题时会主动把出问题时的调用栈信息打印出来,比如我们在eclipse中调试jav...

  • Java -cp命令行引用多个jar包的简单写法(Windows、Linux)

    2016-12-06 - 1、Windows下用法 在Windows上,可以使用 java your-jar-lib-fold/* your-main-class your-jar-lib-fold为存放一堆jar文件的路径。 your-main-class为要运行的具有main方法的主类。 JDK 1.7及以上版本支持该写法。 2、Linux下用法 在Linux上,这样写似乎并不...

  • 用windows浏览器打开Linux的Jupyter notebook开发、调试示例用windows浏览器打开Linux的Jupyter notebook开发、调试示例

    2016-12-05 - 1.场景,在windows浏览器中打开Linux环境下的jupyter notebook。Jupyter notebook开启远程服务,Spark、python计算环境在Linux服务器中,而工作环境是windows。在windows下使用jupyter notebook环境进行开发、调试。涉及的配置文件 Github源码 场景如下 通过...

  • 嵌入式linux使用rpc实现多任务过程调用

    2016-12-04 - 在嵌入式Linux应用产品开发过程中,由于应用程序使用了多进程开发模式,在软件平台为应用程序提供API接口时,会涉及到接口函数多任务调度支持的问题。 linux的每个进程有自己独立的地址空间,如果API接口函数在多个应用进程中执行,则不能使用全局变量进行数...

  • 神奇的'asdf;'错误

    2016-12-01 - 1.问题的由来 编译代码时,有时候会根据宏设置进行条件编译,例如u-boot的代码common\board_r.c中: static int run_main_loop(void) { #ifdef CONFIG_SANDBOX sandbox_main_loop_init(); #endif /* main_loop() can return to retry autoboot, if so just r...

  • Linux下动态库的建立Linux下动态库的建立

    2016-11-30 - 我们讨论了Linux下静态库的建立和使用(http://www.linuxdiyf.com/linux/26445.html),现在我们将讲述一下动态库的建立和使用。 首先还是说一下规则 动态库的创建: gcc -shared fPIC o 库名.so 源文件.c 动态库的使用: gcc 源文件.c ./ 库名.so o 可执行...

  • Linux下静态库的建立Linux下静态库的建立

    2016-11-30 - 首先我们先来说一下静态库的建立 静态库的创建:创建规则: gcc c 源文件.c ar rcs 静态库名 目标文件1 目标文件2 rc:静态库不存在,就创建该库文件 s:更新库文件 首先我们先建立一个cla.c的文件,以下是代码。这个小程序是实现加减乘除运算的。 int main(...

  • python将图片转换为Framebuffer裸数据格式(终端显示图片)python将图片转换为Framebuffer裸数据格式(终端显示图片)

    2016-11-30 - 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可。 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显示不出来的,需要扣出像素信息,并按照Framebuffer的RGBA顺序调整好,才能显...

  • 提取bmp图片的颜色信息,可直接framebuffer显示(c与python版本)

    2016-11-30 - 稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像素信息,从而可以直接送入framebuffer显示 搜索了一下,有不少文章介绍,如何...

  • Linux framebuffer显示bmp图片Linux framebuffer显示bmp图片

    2016-11-29 - 帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。 framebuffer是LCD对应的一种HAL(硬件抽象层),提供抽象的,统一的接口操作,用户不必关心硬件层是怎么实...

  • Linux平台Java调用so库-JNI使用例子

    2016-11-29 - 首先,编写一个Java文件,包含有native方法 public class MyJni { public native void display(); public native double sum(double x, double y); public static void main(String[] args) { } } 其次,将此Java文件编译成.h文件 javah MyJni 执行完此命令...

  • Shell中expr的使用

    2016-11-28 - 1.expr命令一般用于整数值,其一般格式为: expr argument operator argument 一般的用法是使用expr做算术运算,如: [root@centos ~]# expr 10 + 20 30 $expr 30 / 3 / 2 5 (注意运算符左右都有空格 ,如果没有空格表示是字符串连接) 使用乘号时,必须用反...

  • 用VS2015开发Linux程序详细教程-配置篇用VS2015开发Linux程序详细教程-配置篇

    2016-11-28 - VS2015推出了跨平台开发,其中包括了对Linux程序开发的支持,最近刚好需要开发Linux程序,对其进行了一些研究。 首先介绍下涉及到的开发工具。 开发工具 VS2015Update3,下文简称VS(可以下载免费社区版) Visual C++ for Linux Development(VC_Linux.exe) 下...

  • 一分钟理解向后兼容一分钟理解向后兼容

    2016-11-28 - 什么是兼容 谈到兼容,少不了获得兼容收益的目标对象,以及提供兼容功能的组件这两个相互对应的概念。 如果一个目标对象,能否在同一组件的同个不同版本上协同工作,则移该组件的两个版本是兼容的,如下图所示: 兼容性分类 组件的两个版本是兼容的,那就会...

  • Windows与Linux动态库的两种加载方式

    2016-11-27 - Windows上的动态库(dll)加载方式有两种: 1.静态加载,运用#pargma comment(lib, xxx.dll)方式,这种方式需要 头文件,lib文件和dll文件配合使用,运行时是直接将动态库加载到内存中的,运用起来也比较方便 2.动态加载,运用LoadLibrary(dllName)方式,这种...

  • Linux中句柄是什么?

    2016-11-27 - 句柄:句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。 指针:指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据。 (在Linux有相应机制,但没有统一的句柄类型,各种类型的系统资...

  • linux shell传递带空格的数组

    2016-11-26 - 本测试有两个程序,程序a接收所有的参数,并且过滤掉-skipTrash,然后调用程序b,程序b非常简单,只是把所有的参数都打印出来,证明参数是正确的。 程序a的源代码如下: #!/bin/bash array=() for((i=1;i=$#;i++)); do if [ ${!i} != -skipTrash ]; then arr...

  • 推荐给程序员GitHub中的七大顶级生产力工具推荐给程序员GitHub中的七大顶级生产力工具

    2016-11-23 - 开发者开发的编程工具已经成为现代软件构建流程中的重要组成部分。而作为程序员们的编码社交平台,GitHub亦提供一系列出色的生产力提升方案。在今天的文章中,我们将分享其中七款人气工具评判依据则为GitHub用户给出的星级评分。 1.Oh My Zsh 拥有超过4万3千...

  • 运用wrapper来帮助我们启动snap应用---shadowsocks命令行运用wrapper来帮助我们启动snap应用---shadowsocks命令行

    2016-11-23 - 在设计我们的snap应用时,很多的时候我们需要使用一个wrapper(一个脚本)来启动我们的应用而不是直接调用在bin目录下的可执行文件.这里的原因有: 很多时候,我们可能需要在运行应用前把我们所需要的运行库的目录加载到我们的路径之中,比如LD_LIBRARY_PAT...

  • 如何在Windows环境下运行从linux移植的Python脚本

    2016-11-23 - 我们可能经常在Linux下运行Python脚本程序(hello.py)。但如果要将linux环境下的python脚本文件放到Windows环境下运行,不能直接运行,那该怎么办呢? 首先,我们要确保我们windows下安装了python编译环境,如:Anaconda。安装了OpenCV,这个在图像处理时需...

  • 初识linux字符驱动

    2016-11-23 - 现在对linux设备驱动还没有什么认识,跟着书上敲了一个字符驱动,这里把代码贴一下. 测试环境是 Ubuntu 16.04 64bit 驱动程序: #include linux/fs.h #include linux/module.h #include linux/init.h #include linux/cdev.h #include linux/uaccess.h #define C...

  • Linux 2.6、4.3内核编译过程的感受与总结

    2016-11-20 - 之前编译过Linux 2.4.10版本的内核,很好编译,中间曾经漏下了SCSI low-level drivers下的BusLogic SCSI support选项导致没法启动系统,后来打开该选项后就行了,随手关闭一些没用的选项后编译速度非常快,30秒之内完成编译。当初以为内核编译也不过如此,直...