2017-01-30 - 背景 我们在查core问题时,有时候需要查看某个TLS变量的值,但是GDB没有提供直接的命令,或者我不知道。这篇文字的目的,就是想办法从core文件中找出某个线程存放TLS变量的内容。 依据 Linux的glibc库创建线程时,使用mmap创建一块内存空间,作为此线程的栈...
2017-01-29 - 百度云盘的限速实在是太过厉害了,破解的一个方法可以使用BaiduPCS进行下载,但是BaiduPCS下载时只能下载单个文件,而不能批量下载或者下载整个文件夹,保存在云盘里的美剧我总不能一个一个地复制文件名一个个地敲命令下载(因为我是个懒人。),于是就写了...
2017-01-28 - 说到写第一个Linux内核驱动程序,再简单不过了。以前也写过,这次将做一个图形化的整理。 我这里以我的开发环境tiny4412为主,我将在这上面写第一个驱动程序。 首先,我在driver/目录下创建yangyx目录,在目录下新建一个hello.c和一个Makefile hello.c内容如...
2017-01-28 - 在先前的文章"如何为我们的Ubuntu Core应用进行设置"(http://www.linuxdiyf.com/linux/25590.html)中,我们通过copy plugin的方法把我们想要的congfigure文件拷入到我们所需要的目录中.具体的实现是这样的: snapcraft.yaml parts: hello: plugin: copy...
2017-01-28 - 我们知道在一个snap包里,我们可以定义任何数量的app.针对desktop应用来说,那么我们如何使得我们的每个应用都有自己的icon及desktop文件呢?在今天的文章中,我们将介绍如何实现这个.特别注意的是,这个新的feature只有在snapcraft 2.25+版本中才可以有....
2017-01-28 - 在很多的时候,我们想把一个website变为一个snap应用,从而我们可以直接从商店里进行下载它,并直接使用.我们不需要在浏览器中输入这个网站的地址.也有很多的时候,我们的游戏就在一个网站上,比如http://hexgl.bkcore.com/play/,我们可以直接把该网址打...
2017-01-27 - 一、Linux下遍历方法 方法非常简单,这里不多说了,可以直接看代码。 #include dirent.h//遍历系统指定目录下文件要包含的头文件 #include iostream using namespace std; int main() { DIR* dir = opendir(/home/hanchao/picture);//打开指定目录 dirent* p...
2017-01-17 - 今儿也不知道是怎么了,网络故障遍地开花,有的是网卡不知道怎么的被禁用了,有的是网线被大妈拖地的时候给搞掉了。 其中有些问题是,无法拿到地址,手动设置吧,又不知道哪些可用,哪些已经备用,所以就写了如下的脚本,判断一下下啦。 #!/usr/bin/env pyth...
2017-01-17 - 使用doxygen 生成源代码的文档是相当方便的,本文就简单整理下doxygen的使用说明。 1.安装 关于安装的问题不做特殊的说明,这里直接使用命令安装,源码安装不做介绍。 ubuntu: sudo apt-get install doxygen centos sudo yum install doxygen 2.配置文件配置...
2017-01-17 - 在使用vim阅读c/c++代码的时候,代码跳转很重要,在学习redis代码的时候遇到这个问题。 网上查找之后通过实践发现cscope比较好用,可以很方便的实现跳转。 1.安装cscope sudo apt-get install cscope 2.生成tag文件cscope.out 在源码目录下执行如下命令生成t...
2017-01-17 - 对于有些snap应用来说,我们很希望在snap安装时能够运行我们的一段脚本来做一些我们想要做的事,比如创建一个文件夹等.那么我们如何能得到这个事件呢?在我们的先前的文章"如何为我们的Ubuntu Core应用进行设置"(http://www.linuxdiyf.com/linux/25590.h...
2017-01-16 - linux平台,使用rand.Seed() //rand_linux.go package main import ( math/rand time ) //get the random number in [min, max] func RandInt64(min, max int64) int64 { if min = max || max == 0 { return max } rand.Seed(time.Now().UnixNano()) //fmt.P...
2017-01-16 - 在 shell 脚本调试系列 中,本文将解释第三种 shell 脚本调试模式,即 shell 跟踪,并查看一些示例来演示它如何工作以及如何使用它。 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的例子展示了如何在这...
2017-01-16 - 在UBUNTU系统上使用alsa库完成了对外播放的wav文件的案例。 案例代码: /** *test.c * *注意:这个例子在Ubuntu 12.04.1环境下编译运行成功。 * */ #include stdio.h #include stdlib.h #include alsa/asoundlib.h int main(int argc, char *argv[]) { int i...
2017-01-16 - 代码示例中三种类型: 1.pthread_mutex_t,互斥锁 2.__sync_add_and_fetch,GCC自带的原子锁 3.nolock,无锁方式 代码如下: /******************************************************** File Name: log_test.c Author: perrynzhou Mail: 715169549@qq.com Crea...
2017-01-16 - 当调用pthread_create 第三个和第四个参数不为空时,要注意第四个参数的传递方法。 一段流行的代码: #include iostream #include pthread.h using namespace std; #define NUM_THREADS 10 void* say_hello(void* args) { int i = *((int*)args);//对传入的...
2017-01-15 - 1、问题 我们常见的int main(int argc, char *argv[], char *envp[]) 各个参数的意义。 2、代码 #includestdio.h #includeunistd.h int main(int argc, char *argv[], char *envp[]) { printf(argc ###\n%d\n,argc); puts(argc end ************************...
2017-01-15 - 1、函数简介 1)、得到当前的进程id pid_t getpid(); 2)、fork函数 要创建进程,必须调用fork函数, 系统调用fork用于派生一个进程,函数原型如下 #includesys/types.h #includeunistd.h pid_t fork(void) 若成功,父进程中返回子进程id,子进程返回0;若出错则...
2017-01-15 - 近日在Linux中部署项目时发现服务无法启动,上一次出现这种问题是kill掉了相关进程,但是并未分析原因,这次又出现了这个问题,于是便分析了一下,分析的基本原因如下: 通过shutdown.sh脚本关闭tomcat时无法关闭JVM进程,导致JVM进程越来越多,占据了大量的...
2017-01-15 - 废话少说,直接上代码: svnRollBack(){ # 获取文件路径 file=$1 # 更新文件到最新版 arr=`svn up $file` # 将文件版本号从信息中抽取出来 arr=${arr##* } v=${arr%。*} # 获取到文件的所有更新信息 arr=`svn log $file` # 从更新信息中删去不必要的信息 arr...
2017-01-15 - 一、删除从左开始第一个匹配字符串及其左边的所有字符串 格式:${var#*regx} x=http://www.csdn.com/ss echo ${x#*//} 输出:www.csdn.com/ss 二、删除从左开始最后一个匹配字符串及其左边的所有字符串 格式:${var##*regx} x=http://www.csdn.com/ss echo $...
2017-01-15 - 包含头文件有两种写法,分别是: #include stdio.h #include stdio.h 和分别表示搜索位置的方式。 VC中,表示先从系统目录下搜索,如果没有搜索到,再从当前目录搜索。表示先从当前目录搜索,如果没有搜索到,再到系统目录搜索。两者都没有搜索到,回到VS指...
2017-01-14 - 切片:使用切片将源图像分成许多的功能区域。 因为要对图片进行切片裁剪,所以用到切片工具必不可少,在ubuntu下有很多的图片处理工具,如 GIMP(Ubuntu的下的Photoshop),shotwell,shotter等等。 但是我想吧一张图片剪裁下来,用那些工具不怎么方便(其实...
2017-01-13 - 作为Linux系统管理员或者软件开发人员,当你使用rm命令删除文件之后发现该文件依然有用但无法恢复,或者使用 rm -rf强制误删了某些文件时,是否为此感到痛苦不堪。是否苦恼于Linux缺乏类似Windows系统的回收站。虽然某些Linux图形界面具有回收站功能,但是在...
2017-01-13 - kernel version 4.4.12 在文件系统层: 1.进入 /sys/class/gpio/ 目录 2.假设你想控制的GPIO0_29,步骤如下: 1].echo 29 export 2].此时会产生一个gpio29 的目录. 3].cd gpio29 4].关注以下几个文件: direction 这个文件是控制你是输出还是输入模式 如果想...
2017-01-13 - 1、write和read方法讲解 #includeunistd.h ssize_t read(int fd, void *buf,size_t count); fd为文件描述符,buf缓冲区指针,count表示要读取的字节数 返回:读到的字节数,若已经到文件尾端返回0,出错返回-1 #includeunistd.h ssize_t write (int fd, void...
2017-01-12 - 1、fputs和fgetc相关函数解释 1]、字符的输出 #includestdio.h int getc(FILE *fp) int fgetc(FILE *fp) int getchar(vaid) 3个函数若成功返回读入的字符值,若出错或则到末尾返回EOF,EOF为常量是-1 2]、字符的输入 #includestdio.h int putc(int c, FILE *f...
2017-01-12 - 1、fdopen(int fd, const char *type)的介绍 比如一写特殊文件不能用io打开,我们先要用open函数得到文件描述符,也就是这个fdopen函数的第一个参数,第二个参数是常量,不同类型不同意义,如下图 2、代码演示 #includestdio.h #includefcntl.h int main(v...
2017-01-12 - 1、文件描述符 Linux操作系统内核(kernel)利用文件描述符来访问文件,文件描述符大于等于0,是一个用户描述被打开文件的索引值,它指向该文件的相关信息记录表,当文件打开或者创建新文件的时,就会返回一个文件描述符,当读写文件时,也需要使用文件描述...
2017-01-12 - 1、题目 用fwrite和fread函数实现文件的复制 2、函数解释 #includestdio.h size_t fread(void *ptr, size_t size, size_t nmemb, FILE *FP); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *FP); 2个函数返回:读或写的对象数 fread函数...
2017-01-12 - 这几天一直在做一个聊天室的项目,昨天构思了一下协议和大概步骤,今天就开始正式写了。我先写了一个注册账号和一个登陆的功能,然后运行了一下,发现还行,没啥大问题。不过在客户端输入密码的时候,总感觉怪怪的,因为在输入密码的时候还是可以看到具体内...
2017-01-12 - 我们知道,在Linux内核中,为了防止竞争的产生,需要加锁。我们最常见的是两种锁,信号量的semphore和自旋锁spin_lock。 semaphore 信号量semaphore这个锁是经常在进程中加上的。那么,当加上这个锁的时候,进程之间仍然可以互相切换。 举一个例子,第一个进...
2017-01-12 - 1.今天来说一下在Linux下如何实现一个JavaScript程序,这个很简单,如果大家想要在linux下搞web开发,服务器架设,大数据等方面,就得继续努力了! 2.首先,我们要实现一个JavaScript小程序,必须要有一个后缀名为html、htm等的文件,所以我先介绍一下三个创...
2017-01-11 - 一、Windows 下编译并执行 Java 字节码文件(类文件) 1、编译 Hello.java 源码文件: java -d . Hello.java 2、执行 Hello.class 字节码文件: java com.smbea.demo.Hello 其中 com.smbea.demo 是 Hello 所在的包,即包名; 二、Linux 下编译并执行 Java 字...
2017-01-11 - 关于图像显示有很多库可以用,Windows下有GDI,GDI+,D3D等,Linux下有X Window和Wayland,此外还有OpenGL,SDL等图形库以及各种GUI库。 了解最原始的方式,对于加深理解依然是有帮助的。下面给Windows和Linux下显示位图的最简单例子: Windows用GDI显示图像...
2017-01-08 - 最近在学习nand,写完nand controller的驱动后,随手也作了一下测试,发现mtd_oobtest老是出错,从这里开始,对它做一点点的分析: 当我们加载mtd_oobtest.ko模块时,下面的函数就会调用: insmod mtd_oobtest.ko dev=0 static int __init mtd_oobtest_init(...
2017-01-08 - 在Linux中有,对于互斥的操作,大多用到了read/write mutex,今天发现一个问题,同一个进程内可以多次获取到。有点像vxworks中的量子锁一样。 但是会有crash打出: ============================================= [ INFO: possible recursive locking detect...
2017-01-08 - 如果要通过SPI控制外部器件,还需要添加SPI的设备驱动以实现SPI的对外控制逻辑。 在Linux内核的driver/spi目录下有许多外设的设备驱动可以参考,这篇博客主要介绍如何使用其中的spidev,c这个设备驱动来实现对外设的控制。 spidev是一个通用的SPI外设驱动,它...
2017-01-07 - Linux下面的输入法,似乎都不太好用,总觉得与搜狗,紫光拼音有点差距,做完第一个开源辞典软件:AlphaDict后,决定自己做一个试试看, 没想到一下子掉入了好大的一个坑里,足足花了近一年的时间,不过,好歹总算是做出了一个1.0版本,一个基本可用的输入法。做...
2017-01-07 - 本程序是在Ubuntu Linux环境下编写成的。这里包括C++语言程序和C语言程序,两者在Qt项目设置参数上略有不同,需要注意。 OpenMp提供并行描述,可以充分使用计算机系统的CPU资源。 step1.创建Qt的C++项目,项目文件如下: TEMPLATE = app CONFIG += console c...