Welcome 微信登录

首页 / 操作系统 / Linux

在Linux上获得线程id的方法

在Linux上获得线程id的方法

在Linux上获得线程id的方法我使用了第二种方法,很方便:#define gettid() syscall(__NR_gettid)用到的地方 gettid()在Linux2.4版本后,Linux使用了NPTL作为自己的线程库,为了兼容POSIX标准,所以在内核task中有两个域tgid和tid,前者是进程id,后者是线程id。在Linux上获得线程id的方法,目前我所知的有三种,当然这里的三种是指在用户态的程序中,否则除非自己写的kernel modu...
Linux下内存占用多的原因

Linux下内存占用多的原因

当Linux第一次读取一个文件运行时,一份放到一片内存中cache起来,另一份放入运行程序的内存中,正常运行,当程序运行完,关闭了,cache中的拿一分却没有释放第二次运行的时候,系统先看看在内存中是否有一地次运行时存起来的cache中的副本,如果有的话,直接从内存中读取,那样,速度就快多了。说明这种情况的很典型的例子是启动firefox,由于firefox程序很大,因此第一次读取运行的时候很慢,尤其在速度不快的机器上,但是当你彻底关闭了firefox,p...
Linux系统在多个VI终端间实现文件内容拷贝

Linux系统在多个VI终端间实现文件内容拷贝

由于Linux系统并没有如同windows上面的那样通用的剪贴板。所以,在多个VI终端窗口之间拷贝文件内容需要一点技巧。其中一个方法就是利用一个文件来作中转,下面这段代码的原理即是如此。将以下两行代码添加到你的.vimrc里面去,在使用VI时,定义一个标签(如mm定义了标签m),在命令行模式下用C m来拷贝标签m与当前行之间的文件内容,即可在另外的终端上用V来粘贴。该方法在任何linux和Unix下面都是可行的。代码(在Vim 7.1环境下):comman...
Linux shell之grep

Linux shell之grep

1.什么是grepLinux grep全称为全局正则表达式打印(global regular expression print),用于查找输入文本中匹配正则表达式的所有行,并写入到标准输出(显示器)。可以说,grep是一个程序家族,它拥有三个实用程序。(1)grep标准grep,只支持部分正则表达式。(2)egrep扩展的grep,支持大部分正则表达式。(3)fgrep快速grep,只支持字符串模式,不支持正则表达式。2.grep工作原理 为了正确使用gr...
嵌入式:关于Linux开发环境的建立

嵌入式:关于Linux开发环境的建立

本人还是比较喜欢在windows中开发程序,毕竟windows使用了这么多年了较为熟悉,从这一点来说本人算不上真正的Linux人员,当然这是本人努力的目标。 环境建立的思路---本人认为在开发路上遇到任何问题,只要解决思路是正确的,问题最终会解决,所以本文不会太多涉及具体的解决方法,主要是针对解决思路做一下解释。 大多数情况我们开发项目会买到开发板,并且开发板会提供比如开发环境、Linux内核、文件系统等等!当我们开发时也应该尽量按照开发板中的说明...
Linux驱动与RTC驱动泛泛研究

Linux驱动与RTC驱动泛泛研究

1、对Linux下的目录更清楚了,ARCH 是和板子或者是硬件系统CPU相关的,也是移植的重点地方,drivers是驱动的文件目录,FS ,NET等是特殊驱动的目录。2、Kconfig 和 Makefile 配合使用,Kconfig 定义一些宏,用户可以选择定义或者不定义,但是正真管理定义了的宏便宜哪些文件,就由Makefile来确定了,根据这一点,我们可以很容易的找到每一个选项背后的源文件在哪里。3、移植的和板子相关的内容都在MACHINE_START ...
在Linux下用g++编译SDL程序的方法

在Linux下用g++编译SDL程序的方法

好几天没进li了。今天在Fedora Core 3(x86_64)下成功编译了我的几个SDL程序。格式是:g++ -o temp temp.cpp `sdl-config --cflags --libs`注意一个问题:头文件名的大小写。是"SDL.h",而不是"sdl.h"。由于最开始是用VC6编的,没注意到,所以搞得莫名其妙了大半天。最后需要强调的一点,`sdl-config --cflags --libs`两端的貌似单引号的东西不是单引号,是Tab键上...
在Linux2.6内核下实现进程隐藏

在Linux2.6内核下实现进程隐藏

很早以前的小程序,比较简单但是觉得有趣原理很简单,Linux查看进程的命令ps是通过系统调用sys_getdents实现,sys_getdents用户获取一个指定路径下的目录条目,实际上就是枚举/proc/ 下的pid,这样我们只需要hook一下sys_getdents,把相应的要隐藏的pid信息去掉即可。以下是LKM代码,在Linux-2.6.14测试并运行成功#include <linux/module.h>#include <lin...
Linux下多语言开发

Linux下多语言开发

Linux下开发多语言软件是一件非常困难的事,各个国家的字符集的编码方式、货币符号、日期格式、数字格式、文字表现都各不相同,glibc提供了大量的函数处理这些事情,不再聱述了。这里要做的是,用一个简单的实例说明一下GetText的用法,GetText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的。 GetText并不是一个神秘的东西,若非要在Win32下找一个东东与之对应的话,我想应该是资源文件(.res),它替你把字符串管理起来,在运...
centos5.1下编译Linux内核

centos5.1下编译Linux内核

整理了一下Linux内核编译的方法,原始内核版本为Linux-2.6.18.8,新内核版本为Linux-2.6.26,其它内核版本编译方法类似。一 准备工作首先当然是获得内核了,可以到http://www.kernel.org/下载。获得内核压缩包后(假设为Linux-2.6.26.tar.gz),先将其复制到/usr/src目录下,然后转到/usr/src目录并进行解压操作,命令如下(假设当前目录为内核包所在目录)cp Linux-2.6.26.tar....
cramfs文件系统和嵌入式Linux

cramfs文件系统和嵌入式Linux

1、cramfs的特点在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把外存(Flash)上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。使用cramfs就是一种解决这个问...
向Linux内核添加驱动

向Linux内核添加驱动

Linux内核中提供了很多设备的驱动代码,但每个项目中总会需要添加我们自己的驱动,比如我们需要添加红外遥控驱动。我们可以先独立去编写和调试这个驱动,等成熟后应该放到内核目录树中,使用make modules命令统一编译。而且要在配置选项中体现出来,用户可以使用make menuconfig命令去配置编译与否。步骤比较简单,不过可能有些人不清楚,现写出来作为参考。一:内核配置方法:一般使用make config 和make menuconfig去配置内核。他...
Vim的一个bug

Vim的一个bug

今天用vi编辑服务器上的一个文件,当我x的时候,提示文件是只读文件?ls看了一下权限,owner、group、读写权限都没问题,我chmod这个文件为777,vi打开还是不能编辑! 然后请教了师兄,也没遇到过这个问题,周围的同事也不是很熟悉,奇怪!Linux下文件的权限不就是这些吗?我是owner,并且文件是可写的,但用vi却无法编辑,尝试echo $str >> file,好使。 问题看来出在vi上面,我知道的可能影响权限的,除了上面的就...
Linux触摸屏驱动解析

Linux触摸屏驱动解析

Linux下开发触摸屏驱动,最好的范例莫过于mc68328digi.c的实现。在没有看到原文之前,我把其中用到的结构解析一下。1,struct ts_pen_info该结构是触摸屏的核心数据结构。用户程序和驱动程序的交互就是通过该数据结构完成的。结构体里面的x,y坐标和状态是gui中事件驱动的原始数据源。2,环形队列gui程序通过read完成对ts_pen_info的提取。而在内核中维护了一个环形队列,只要队列不为空,将立即返回数据给应用程序。3,中断驱动...
<< 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 >>