Linux
文章平均质量分 65
panfengsoftware
沉淀
展开
-
多线程调用函数理解
1.多线程调用同一个函数的理解多线程调用一个函数和一个线程调用一个函数是一样的,关键要看你的函数是否使用了一些全局的东西。函数的调用有自己的栈,每个函数的栈都是独立的.唯一要考虑的是,在调用这个函数中,如果函数里面有全局变量或者静态变量,则需要考虑并发的问题,都是局部变量则没有任何影响(局部变量都被分配在栈上)。2.线程安全函数和可重入函数 线程安全的(Thread-S原创 2012-12-13 11:16:29 · 4252 阅读 · 0 评论 -
linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
转载:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851570.htmlshell可以在不调用第3方命令,表示不同进制数据。这里总结以下表示方法。shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。如:以 0 开头就是 8 进制.以0x 开头就是16 进制数.使用 BA转载 2013-04-10 13:57:25 · 832 阅读 · 0 评论 -
linux设备驱动扫盲
Q: 为什么一般要把设备分为“字符设备”和“块设备”?A: 一方面, 是为了描述上的方便。像磁盘那样的,以块或扇区为单位,成块进行输入输出的设备,称为块设备;像键盘那样的,以字符(字节)为单位、逐个字符进行输入输出的设备,称为字符设备。文件系统通常都建立在块设备上。 另一方面,也是更重要的一方面,是为了技术处理上的方便。对于不同的设备,其文件系统层的“厚度”有转载 2013-04-16 19:51:01 · 732 阅读 · 0 评论 -
Linux下获取system调用的命令的返回值
例:status = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。 2、如何正确判断test.sh是否正转载 2013-04-19 19:30:28 · 1308 阅读 · 1 评论 -
Linux 中环境变量的设置方法详细介绍
此文非原创,整理于网上资料,下面列出文章出处,排名不分先后~http://man.chinaunix.net/linux/mandrake/cmuo/basics/cbshell5.htmlhttp://www.y nma.org/data/2009/1117/article_4016.htmhttp://blog.21ic.com/user1/5397/archives/2008/5转载 2012-07-22 21:08:19 · 1320 阅读 · 0 评论 -
从一道面试题谈linux下fork的运行机制
摘要:由于fork函数运行机制的复杂性,造就了当两个fork并排时,问题就变得很复杂。解这个题的关键,一是要对linux下进程的机制有一定认识,二是抓住上文提到的几个关于fork的关键点。 今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:?转载 2013-05-22 13:47:58 · 540 阅读 · 0 评论 -
Linux GCC常用命令
1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。转载 2013-05-22 13:16:47 · 481 阅读 · 0 评论 -
Signal ()函数详细介绍
signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SI转载 2013-05-09 13:47:57 · 1577 阅读 · 0 评论 -
The differences of dynamically link and static link linux so
提起Dynamically linked,则要归结到库的概念和应用了,所以我就系统地了解了一下子,并愿意贴出来,跟大家一起分享。库的目的是将类似的功能封装在一个单元集中。这些单元可以被其他开发人员共享,并称其为模块化编程,也就是说从模块中编译程序。Linux支持两种类型的库,每种都有自己的优点和缺点。静态库在编译程序时,将库中相应的功能绑定到程序中;然而动态库则不同,它是当程序在运行时才被原创 2012-07-23 14:23:45 · 657 阅读 · 0 评论 -
linux kill 命令
kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令的另外一个用途就是向指定的进程或进程组发送信号(The command kill sends the specified sign转载 2013-05-09 13:33:11 · 892 阅读 · 0 评论 -
在Linux内核启动时打印时间
具体实现方法:make menuconfig ---> Kernel hacking --> show timing information on printks 当选中这个选项后,启动内核,会在log信息前面加上时间信息。 如下:--------------------------------------------------------------------转载 2013-04-09 15:18:24 · 1435 阅读 · 0 评论 -
linux之cut用法
linux之cut用法cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。(1)其语法格式为:cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节转载 2013-04-10 13:23:46 · 784 阅读 · 1 评论 -
linux shell bc命令 处理浮点数
一般的整数运算可以用 expr这个命令解决,expr命令一般用于整数值,但也可用于字符串。一般格式为:expr argument operator argumentexpr也是一个手工命令行计数器。$expr 10 + 1020$expr 1500 + 9002500$expr 30 / 310$expr 30 / 3 / 25(注意运算符左右都有空格转载 2013-04-10 14:09:00 · 3719 阅读 · 1 评论 -
Linux 字符类别判断
一般情况下判断一个字符为大写的方法用if 语句来判断,比如[cpp] view plaincopyIf (c>=’A’&&creturn true; 小写的方法与之类似因为字符A-Z,a-z在ASCII上是连续的,所以一个范围判断就可以了,假设某些字符在ASCII上是不连续的,比如十六进制数,0-9,A-H,那么if语句转载 2012-12-13 10:45:17 · 811 阅读 · 0 评论 -
Linux下.ko, .o, .so, .a, .la文件
Linux下文件的类型是不依赖于其后缀名的,但一般来讲:.ko 是Linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在Linux系统启动时加载内核模块.o 是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多.a 为静态库,是好多个.o合在一起,用于静态连接.la 为libtool自动生成的一些共转载 2013-01-05 20:45:04 · 384 阅读 · 0 评论 -
32位Windows XP的VMWare里安装64位Ubuntu Linux/JDK1.6
1、CPU AMD系列的CPU略过 Intel系列的CPU芯片需要支持EM64T和VT技术才行,并且BIOS也要支持才可以。 为了确定你的Intel CPU是否支持VT,请查看: http://compare.intel.com/pcc/default.aspx?familyid=5&culture=en-US 我的笔记本CPU是:Intel Mobile Core 2 Duo转载 2013-01-14 11:06:56 · 507 阅读 · 0 评论 -
linux 下判断 系统/CPU 64 bit/32 bit 的几种方法
linux下32bit OS与 64bit OS对软件的不兼容对于系统管理员来说是件头疼的事情,各种程序的安装、编译、以及一大堆的依赖库都要求与特定的系统兼容,因此,你部署前,有必要了解你的系统是多少位的。1、ls -lF /|grep /$如果系统64位则会显示如下的目录,如没有显示此目录则系统为32bitdrwxr-xr-x 6 root root转载 2013-01-14 11:08:36 · 994 阅读 · 0 评论 -
Embedded Unit
一、Embedded Unit 简介 Embedded Unit(简称embUnit)是一个针对嵌入式C系统的单元测试框架。它不依赖于标准的C函数库,所有的对象都被静态编译链接。因此,可以比较方便地将其移植到嵌入式平台。 下载地址:http://sourceforge.net/projects/embunit/files/【备注】:Embedded Unit测试原理是通转载 2013-01-28 19:09:05 · 1702 阅读 · 0 评论 -
HOWTO do Linux kernel development
转载 : http://www.kerneltravel.net/newbie/dev_howto.htmlHOWTO do Linux kernel development - take 3 (中文版)译者:张乐 robert_AT_thizlinux_DOT_com原作:Greg KH译注:本文依据take 3翻译,应该不会再有大的改动了,如果有本文会随时更新时转载 2013-02-04 20:28:52 · 517 阅读 · 0 评论 -
Linux下查看CPU信息[/proc/cpuinfo]
最近在研究linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下。通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西。在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下:上图是本人电脑的CPU信息,下面我们来分转载 2013-04-01 20:37:26 · 406 阅读 · 0 评论 -
ubuntu 安装ncurses
ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序都不使用了,不过如果要编译一些老程序,还经常遇得到。执行命令 sudo apt-get install libncurses5-dev转载 2013-04-09 17:13:52 · 642 阅读 · 0 评论 -
【Linux】shell: 获取时间间隔到毫秒、微秒级别
对于shell,通过date命令可以获取到当前时间,还可以设定特殊格式,看help你可以看到下面两个好用的参数:?%s seconds since '00:00:00 1970-01-01 UTC' (a GNU extension)%N nanoseconds (000000000..999999999)转载 2013-04-09 20:36:49 · 2488 阅读 · 0 评论 -
bash shell中expr命令下几种的使用
expr在linux中是一个功能非常强大的命令。通过学习做一个小小的总结。1、计算字符串的长度。我们可以用awk中的length(s)进行计算。我们也可以用echo中的echo ${#string}进行计算,当然也可以expr中的expr length $string 求出字符串的长度。举例[plain] view plaincopy转载 2013-04-10 14:04:29 · 627 阅读 · 0 评论 -
Difference between CPPFLAGS and CXXFLAGS in GNU Make
CPPFLAGS is supposed to be for flags for the C PreProcessor; CXXFLAGS is for flags for the C++ compiler.The default rules in make (on my machine, at any rate) pass CPPFLAGS to just about eve转载 2013-05-10 13:35:02 · 1021 阅读 · 0 评论 -
assert在debug 和 release版本中的区别
assert在程序的release版本中仍然有效(不要与VC中的ASSERT混淆),要使assert失效,只有在包含assert头文件(assert.h)的语句前定义NDEBUG宏或在编译器参数中添加-DNDEBUG参数。********************************************************相关文章转载***********************转载 2013-05-10 13:42:59 · 1423 阅读 · 0 评论 -
Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D
在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项: -D macro=string,等转载 2012-08-17 22:17:33 · 2173 阅读 · 0 评论 -
linux mmap (二)
Linux设备驱动之mmap设备操作1.mmap系统调用void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write;参数:addr:映射的起始转载 2013-06-19 16:08:13 · 617 阅读 · 0 评论 -
内存耗用:VSS/RSS/PSS/USS
TermsVSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)一般来说内转载 2013-06-21 15:46:19 · 778 阅读 · 0 评论 -
unix domain socket判断客户端断开连接
1. 使用Poll管理的时候,可以用 pollfd 的 revents来判断客户端fd是否断开,比如 POLLHUP2. 使用Select 管理的时候,不管是阻塞或者是非阻塞的 fd, 都可以用 read 或者 recv 返回值为 0 来判断客户端是否断开连接。注意的非阻塞的 fd,在数据没有准备好的时候,要判断errno 为 EWOULDBLOCK 或者 EAGAIN3. send 的时原创 2013-06-24 18:31:58 · 2279 阅读 · 0 评论 -
UNIX下的LD_PRELOAD环境变量
转载:http://blog.csdn.net/haoel/article/details/1602108前言 也许这个话题并不新鲜,因为LD_PRELOAD所产生的问题由来已久。不过,在这里,我还是想讨论一下这个环境变量。因为这个环境变量所带来的安全问题非常严重,值得所有的Unix下的程序员的注意。 在开始讲述为什么要当心LD_PRELOAD环境变量转载 2013-06-25 20:00:40 · 532 阅读 · 0 评论 -
Gcc扩展:__attribute__((constructor))
__attribute__((constructor)),看样子又是Gcc的扩展,从注释知道这个关键字的作用是让被修饰函数在main函数开始之前调用。不过,还是顺便好奇了一下下,翻了一下Gcc的手册,由于我测试机器上的Gcc版本是4.1.1,所以查看了4.1.2版本的文档。对于__attribute__ ,解释如下: Declaring Attributes of Fu转载 2013-06-25 20:01:50 · 1288 阅读 · 0 评论 -
linux dos2unix 和 unix2dos
用途说明dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且转载 2013-06-25 16:05:33 · 549 阅读 · 0 评论 -
linux程序分析工具介绍
linux程序分析工具介绍(一)—-”/proc” 写在最前面:在开始本文之前,笔者认为先有必要介绍一下linux下的man,如果读者手头用linux系统,直接在终端输入man man便可以看到详细的说明,我在这里简单的总结一下,man命令是用来查看linux下各种命令、工具等的用户手册(manual)的。一种比较常用的用法是”man n field”,这里的n是要查找的手册了类型,f转载 2013-07-01 13:46:20 · 779 阅读 · 0 评论 -
/sys/dev 和/sys/devices 和udev的关系
sysfs introduction:----------------------------sysfs is a mechanism for representing kernel objects, theirattributes, and their relationshipswith each other.It provides two components: a ker转载 2013-08-28 13:38:16 · 772 阅读 · 0 评论 -
GDB 调试
一、多线程调试多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。thread 切换调试的线程为指定ID的线程。break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。set scheduler-locking off|on|step,这个是问得最多的。在使用step或者转载 2014-02-13 15:00:42 · 486 阅读 · 0 评论 -
linux中Oops信息的调试及栈回溯
Oops 信息包含以下几部分内容。1 一段文本描述信息。比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000”的信息,它说明了发生的是哪类错误。2 Oops 信息的序号。比如是第 1 次、第 2 次等。这些信息与下面类似,中括号内的数据表示序号。Internal转载 2014-02-13 16:19:02 · 531 阅读 · 0 评论 -
linux mmap (一)
一. mmap系统调用1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用.转载 2013-06-19 16:05:35 · 545 阅读 · 0 评论 -
Linux设备驱动之I/O端口与I/O内存
一、统一编址与独立编址该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢mason_hu的分享。 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接转载 2013-06-19 16:10:00 · 590 阅读 · 0 评论 -
nfs mount 设置文件服务器
1. server 端例如可以编辑/etc/exports为:/tmp *(rw,no_root_squash)/home/public 192.168.0.*(rw) *(ro)/home/test 192.168.0.100(rw)/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)设转载 2013-05-10 18:46:40 · 640 阅读 · 0 评论 -
linux strings命令
一.简介:显示文件中的可打印字符二.用法strings [option(s)] [file(s)]选项说明:-a – –all 扫描整个文件而不是只扫描目标文件初始化和装载段-f –print-file-name 在显示字符串前先显示文件名-n –bytes=[number] 找到并且输出所有NUL终止符序列- 设置显示的最少的字符数转载 2013-05-10 18:43:04 · 941 阅读 · 0 评论