2016-09-09 - kernel 模块的简介 Linux 内核进行扩展时,例如编写驱动程序、netfilter功能等,最方便的方式是通过编写模块,然后加载到内核中。由于 kernel 模块已加载到内核,因此如果模块出现错误,将导致内核出错甚至系统崩溃。所以,一般建议在测试内核模块时,如果与...
2016-09-09 - 有些时候我们在一段 C/C++ 代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了Segmentation fault (core dumped)段错误。 这种问题我想很多人会经常遇到。遇到这种问题是非常无语的,只是提示了段错误,接着什么都没有,如果我们一味的...
2016-09-09 - 此示例是在Linux环境下(使用Linux系统编程线程相关函数)测试,文件说明如下: ThreadBase.cpp, ThreadBase.h为线程基类 ThreadDerive.cpp, ThreadDerive.h为测试派生类 main.cpp为测试程序 ThreadBase.h内容如下: #ifndef __THREADBASE_H__ #define __THR...
2016-09-09 - 本篇文章主要实现了: (1)根据Qt中指定的中心点加载一副百度地图; (2)单击目标点进行画圆; (3)手动制定圆的半径进行画圆; (4)获取目标点的经度和纬度,返回给Qt 最终效果: (1)根据指定中心点加载一副地图 1)新建一个窗体工程,继承自QMainWindo...
2016-09-09 - 在Linux下,程序崩溃时会产生core文件,记录错误信息--------即core dump。 一、core文件产生 默认情况下,core dump是关闭的。输入ulimit -c,查看存储core文件的大小,显示0,即不会产生core文件。 设置core文件大小为某一不为零的值,即可自动产生core文...
2016-09-09 - 很多开源程序,都是使用CMakelists写的。出现问题时,使用gdb进行调试比较麻烦,gdb调试时要求程序是Debug编译的。 一种办法是把程序修改成基于Qt的程序,但是修改的过程中,肯行也会遇到很多问题。 其实,CMakelists也有Debug模式,只是一般开源的程序,都...
2016-09-08 - 开发环境ubuntu16.04+Qt5.6.1、WIN7+Qt5.6.1两个环境都测试过。 1.问题 写一个小软件的时候,带有导出excel功能,但是要在linux下运行,最后了解到csv格式,实现起来方便多了,只是用excel打开中文有乱码的现象有一个简单的解决办法。 2.代码 写了一个小方法...
2016-09-08 - Pythran是一个Python到C++转换工具,和Cython一样,它的目的也是提高Python代码的执行效率,但是它们在实现方法上有本质的不同。 Pythran的源代码:https://github.com/serge-sans-paille/pythran Pythran图示: Python执行计算密集型的代码非常慢,和编译型...
2016-09-08 - 在Qt中,QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。 这个类在QtCore4.3中被引入。 小文件内容加密的时候,直接将文件内容传进入加密即...
2016-09-07 - 1.根据命令生成md5做为文件名保存当前进程的pid 2.使用exec执行命令 3.如果再次执行, 使用ps -p检测上次pid是否有效, 如果是则exit 200.否则重复1. hadoop@ubuntu102:~$ cat guard #!/bin/bash declare fpid=/tmp/$(echo -n $@|md5sum|awk {print $1}); if [...
2016-09-07 - 本程序在Ubuntu和Centos系统下能够正常使用! 具体实现的代码: bool isSingleProcess () { long pid; char full_name[1024] = {0}; char proc_name[1024] = {0}; int fd; pid = getpid(); cout pid = pid; sprintf(full_name, /proc/%ld/cmdline, pid); if...
2016-09-07 - linux下实现类似windows的getch函数功能的代码: ##################代码开始################## #include stdio.h #include stdlib.h #include termios.h #include unistd.h int getch() { struct termios tm, tm_old; int fd = , c; if (tcgetattr(fd, tm)...
2016-09-06 - 前言 整个暑假跟着韦东山的视频和书籍移植了linux2.3.6到jz2440,现在自己尝试移植linux4.7.2到板子上,并使用ubifs文件系统代替旧的jffs2文件系统。 下载交叉编译工具链 工具链我使用的是friendlyARM提供的工具链,因为韦东山教程提供的工具链比较旧不能编...
2016-09-06 - 消息队列 *消息队列是内核地址空间中的内部链表,通过内核在各个进程之间传递的内容。消息顺序发送到消息队列中,每个消息队列都有IPC标识符唯一地进行标识。 msgbuf结构 struct msgbuf{ long mtype; //消息类型 char mtext[1]; //消息数据 }; msgid_ds结构...
2016-09-06 - 1)./file 重新启动一个子shell,在子shell中执行此脚本,结果并不会影响到当前shell。 2). ./file 在当前shell下执行脚本file,一般情况下是把环境变量放到file中,然后执行它设置。 等效于source ./file ,也通常用来执行刚修改过的文件,使它立即生效。...
2016-09-06 - 前言 之前做算法题都是在CodeBlocks上写的,为了尽快入门心怡许久的Emacs决定以后都用它来写,而不能仅仅将其作为编辑器。 使用C-x C-f来打开/创建文件,写好代码,然后用C-x C-s来保存文件。这是最基本的操作了,比起方向键我更喜欢C-n C-p C-f C-b的方式。...
2016-09-05 - 下面是一个查看所有用户的磁盘空间使用情况的脚本。 脚本程序如下: #!/bin/sh for user in `ls /home` do du -hs /home/$user done 脚本执行结果: [root@syy ~]# . homeusage.sh 32K /home/saleli 9.2G /home/syy 500K /home/wph 太简单了,不解释了。 本...
2016-09-05 - 1.升级g++版本 仅g++ 4.8及以上版本才支持C++ 11标准。 查看g++版本: $ g++ --version 2.打开g++的C++ 11标准支持 g++ 4.8默认不支持C++ 11标准,使用参数 -std=c++11来开启C++ 11标准支持. 编译使用了C++ 11标准的代码文件: $ g++ -std=c++11 test_c11.cp...
2016-09-04 - 我们先来了解一下什么是守护进程? 守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止...
2016-09-04 - 源代码: void prog() { char prog_buf[102]; memset(prog_buf,\0,sizeof(prog_buf)); char *sign=|/-\\; //在进度条推进的时候,光标在以顺时针旋转 int i=0; for(i=0;i=100;i++) { prog_buf[i]==; printf([%-101s][%%%d][%c]\r,prog_buf,i,sign[i%4]); //...
2016-09-04 - 首先我们先在Linux环境下验证一下atexit函数调用注册函数的顺序: 为此写了四个fun函数,并且四个fun函数和main函数各自打印一句话,通过屏幕上的输出显示ulai验证调用顺序: (1)fun函数 (2)main函数 (3)makefile文件 (4)运行结果 过程分析:atexit...
2016-09-04 - 编写进度条思路: 左右中括号保持不动,从行首输出=,每次从头输出进度条字符串,进度条字符串里的内容不断增加,这样造成的视觉感觉是等号在增加,即进度条增加。 过程: 第一步,在Linux平台下,打开终端,创建一个pro.c文件(vim pro.c,回车),并; 第...
2016-09-04 - 首先,看看系统中有没有/sys/class/gpio这个文件夹。如果没有请在编译内核的时候加入Device Drivers- GPIO Support -/sys/class/gpio/ (sysfs interface)。 /sys/class/gpio 的使用说明: gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射...
2016-09-04 - 1.引言 除了使用Wordpress插件备份数据库外,最近想到一种更棒的办法备份所有文章,就是自动将每篇文章生成PDF保存到本地。 本文记录了如何借助Python完成这项有趣任务。 2.准备工作 注意:以下所有操作均在Ubuntu 16.04系统上完成。 安装wkhtmltopdf,该工...
2016-09-03 - 在写一个自动配置脚本时,我需要判断某个软件版本是否符合我的要求。例如,需要的最低版本满足($version 1.3.2),或者在某个版本范围(1.1.4 $version 2.4.3)。 版本号的格式一般是X.Y.Z,它是一个字符串。 在bash shell中,最简单的方法是使用sort命令,...
2016-09-02 - 说明下,现在windows 10上有PowerShell 和 Bash, Linux和Mac上也有bash和PowerShell。(https://github.com/PowerShell/PowerShell) 很多人说bash很好用啊,特别是sed/awk之类的程序,应该很少人用PowerShell吧? 但是微软又不傻,PowerShell肯定有它的强...
2016-09-01 - 1.解决的问题 当你需要一次输入很多个命令的时候,例如一次去多个目录删除文件 cd dir1 rm file1.temp cd ../../dir2 rm -rf dir3 当你懒得输入一个好长的命令或者直接就记不住那么长的命令的时候,例如生成ctags ctags --languages=C++ --exclude=third_par...
2016-09-01 - 1.解决的问题 当在多个目录间cd的时候,需要输入一大串的路径。例如在不同的项目、不同的分支代码目录跳转,在桌面和文档目录跳转 cd ~/Desktop/project_trunk cd ~/Download/cang_lao_shi cd ~/code/branch-1.11/ cd ~/code/branch-3.1/project/android 这...
2016-09-01 - xl create命令能够基于预配置的根文件系统、能运行于XenDomU的内核、ramfs和Xen配置文件启动DomU,当然,在其启动之前,所有需要用到的其它组件都需要准备就绪方才可以。这一切准备就绪后,使用xlcreate命令有点类似于按下主机的电源按钮对其进行启动。下面...
2016-08-31 - 今天浏览arduino.cc官网,找到一个好东东,以后,在ubuntu下用终端编程在也不发愁了。 platformio.org是一个物联网全能的IDE,甚至还贴心的提供了在命令行下编程的版本:platformio CLI 好东西不能独享啊,拿出来给看到这篇文章的童鞋们。 一、安装篇。 plat...
2016-08-31 - 1、现在实用的内核3.10已经开始实用DTS方法。 2、dts节点的写法 Nodename@Address{ compatible=xxx; xxx; }; 当设备没有地址时,@Address为非必要。 3、bootloader启动时将加载dtb给内核,内核分析dtb即可知道machine,所以bootloader 不再需要传递设备ID号。...
2016-08-31 - 代码为: typedef char * va_list; /* * Storage alignment properties */ #define _AUPBND (sizeof (acpi_native_int) - 1) //acpi_native_int 为4字节(32位)(根据机子字数而定) #define _ADNBND (sizeof (acpi_native_int) - 1) /* * Variable argument...
2016-08-30 - 1、概要 i2c是由PHILIPS推出的串行总线。无论是电气特性和总线协议都比较简单。关于i2c的电气特性和协议请参考i2c的规格说明说。 后来intel推出了另一种总线规范SMBus(system management bus)。不过SMBus基本上是基于i2c规范的。关于他们之间的相同和差异...
2016-08-30 - 有些时候Linux驱动或内核的开发者想要获取Linux内核的一些异常事件,并对异常事件做出一些处理和响应。例如记录一些异常时的日志或dump出堆栈信息来帮助分析系统发生异常的原因。本博客将要介绍如何获取内核的halt、restart、power off、oops、panic以及OOM...
2016-08-30 - 1、概览 之前的文章中说过,struct i2c_adapter在i2c子系统中就代表了一个i2c控制器,也就是一条i2c总线。其实实现i2c总线或控制器驱动,其实就是实现一个struct i2c_adapter结构以及结构中的与平台相关的发送数据的接口,这些接口涉及到操作具体的寄存器。...
2016-08-30 - 当Linux开发者谈论一个实时时钟,他们通常指的是某种能记录墙上时间,并且有备用电池,以至于在系统关机的时候仍然可以工作的器件。这样的时钟通常不会追踪本地时区和夏令时间。除非他们和MS-Windows 双启动,但是会被替换设置成UTC时间。 最新的非PC硬件倾...
2016-08-29 - 之前学习makefile,依赖的.o文件简单的就是自己写出来,或者通过生成.depend文件,通过include .depend文件的方法,获得依赖规则,下面介绍一种推荐写法,同样是将: gcc -MM main.c 这样获得的依赖规则写入文件,然后通过include文件的方法获取依赖规则,具...
2016-08-29 - 在linux中,打开文件可以使用系统调用open,也可以使用库函数fopen,前者返回的是文件描述符,后者返回的是一个FILE* 的文件指针。 在open的man page(系统调用为第二章节)中,open函数有两个,一个参数只有一个,一个有三个参数,最后一个参数为mode。 当你...
2016-08-29 - linux应用读取input按键驱动上报键值案例代码: #include stdio.h #include stdlib.h #include string.h #include unistd.h #include fcntl.h #include signal.h #include limits.h #include termios.h #include errno.h #include linux/input.h #include lo...
2016-08-28 - CMakeLists.txt 文件内容: cmake_minimum_required(VERSION 3.4) message(STATUS CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}) message(STATUS CMAKE_C_FLAGS_DEBUG = ${CMAKE_C_FLAGS_DEBUG}) message(STATUS CMAKE_C_FLAGS_MINSIZEREL = ${CMAKE_C_FLAGS_MINSIZERE...