
LinuxOS
文章平均质量分 66
nitweihong
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux shell下的后台运行以及与前台的转换
当用bash启动一个程序,你可以用在程序后加&,实现程序在后台运行;例如: emacs &但如果你忘了输入&;但你又不想把程序停止后重新启动;你可以这么做:按Ctrl + Z暂停前台工作,比如前面提到的Emacs;然后用jobs命令查看当前bash一共启动了多少程序,你可以看到你的emacs在其中,它的状态是Stoped的; 并且它的jobID也可以转载 2011-11-18 16:32:08 · 144 阅读 · 0 评论 -
如何编写Linux设备驱动程序
序言 Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,获得了转载 2012-01-31 10:58:36 · 136 阅读 · 0 评论 -
GDB调试精粹及使用实例
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改原创 2012-02-01 10:50:44 · 135 阅读 · 0 评论 -
linux udp 单播 组播 广播实现
1、组播和广播需要在局域网内才能实现,另外得查看linux系统是否支持多播和广播:ifconfig UP BROADCAST MULTICAST MTU:1500 跃点数:1 说明该网卡支持2、发送多播包的主机需要设置网关,否则运行sendto()会出现"network is unreachable",网卡可以随便设置,但是一定要设。还要添加路由240.0.0.0转载 2012-02-04 11:03:38 · 1413 阅读 · 0 评论 -
linux C func dlopen and dlsym
dysym() The function dlsym() takes a "handle" of a dynamic library returned by dlopen() and the null-terminated symbol name, return‐ ing the address where that symbol is loaded into mem原创 2012-02-23 16:09:26 · 395 阅读 · 0 评论 -
linux线程安全性
在目前的计算机科学中,线程是操作系统调度的最小单元,进程是资源分配的最小单元。在大多数操作系统中,一个进程可以同时派生出多个线程。这些线程独立执行,共享进程的资源。在单处理器系统中,多线程通过分时复用技术来技术,处理器在不同的线程间切换,从而更高效地利用系统 CPU资源。在多处理器和多核系统中,线程实际上可以同时运行,每个处理器或者核可以运行一个线程,系统的运算能力相对于单线程或者单进程大幅增强。原创 2012-02-23 17:06:56 · 199 阅读 · 0 评论 -
什么是proc文件系统
什么是proc文件系统proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下:目录名称 目录内容原创 2012-03-02 15:01:43 · 138 阅读 · 0 评论 -
Linux查看CPU和内存使用情况 (转)
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。操作实例:在命令行中输入原创 2012-03-02 15:02:32 · 996 阅读 · 0 评论 -
linux中select()函数分析
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式原创 2012-04-12 08:58:56 · 189 阅读 · 0 评论 -
Memory Management
malloc_trim() explicitly requests that any unused memory space be returned to the OS. Note that this happens automatically when free() is called with a sufficiently large chunk;原创 2012-04-12 15:28:50 · 201 阅读 · 0 评论 -
GCC编译选项
gcc 提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration原创 2012-04-19 08:34:37 · 289 阅读 · 0 评论 -
C Compiler Warning Abstract
1) warning: ISO C90 forbids mixed declarations and codeC语言是面向过程的语言,这个警告通常表示声明应该在其他代码的前面。 2) warning: initialization from incompatible pointer type在Linux kernel中有许多callback函数,这个警告表明call原创 2012-05-16 10:15:50 · 240 阅读 · 0 评论 -
声明函数指针并实现回调
程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法原创 2012-05-17 10:37:04 · 215 阅读 · 0 评论 -
C++ Const使用总结
const:类型限定符,可以指定所修饰对象,不改变内容和在内存的存储地址.1>修饰基本类型变量如:const int x=10;//值和地址都不能变再赋值.x=77;//错误2>const指针指针可用const修饰,可放在类型前,类型后,或是两边都放. a>常量指针.对int* 用类型限定符const: 如:int number=原创 2012-05-22 15:01:23 · 272 阅读 · 0 评论 -
Busybox下tftp命令使用详解
Busybox下的tftp命令可以用来进行单文件传输。使用的时候,是把电脑作为服务器Server,Busybox作为客户端Client,使用tftp命令可以实现从Server下载单个文件到Client,或者从Client上***个文件到Server。 首先来了解一下tftp命令参数,在Busybox下输入tftp –help,得到tftp使用的详细参数,如下图原创 2012-08-21 15:41:15 · 194 阅读 · 0 评论 -
write的奥秘
在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一 个简简单单的write函数能转载 2012-09-07 09:29:24 · 193 阅读 · 0 评论 -
sockaddr与sockaddr_in结构体简介
struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */char sa_data[14]; /* 14 bytes of protocol address */};sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF原创 2012-01-30 15:55:08 · 165 阅读 · 0 评论 -
静态存储区的大小
一般的C语言书上都是这么讲的: 一个程序的全局变量,static变量等从静态存储区分配; 局部变量,函数形参从堆栈分配; 动态申请的空间从堆上分配。 那么加入在win32环境中,这里的堆,堆栈,静态存储区是否就对应着用户的2G地址空间的某一部分? 它们究竟各在哪个位置并且各占多大空间呢?堆;你自己分配多大就多大,但系统有上限,你可以测试一下你能malloc多少 栈:原创 2012-01-30 14:28:42 · 341 阅读 · 0 评论 -
堆栈的作用是什么?试说明工作原理
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点: 堆:顺序随意 栈:后进先出(Last-In/First-Out)编辑本段堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的原创 2012-01-30 14:28:19 · 572 阅读 · 0 评论 -
Linux中自动运行程序
1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行“xinit”或“star转载 2011-11-18 16:20:38 · 148 阅读 · 0 评论 -
什么是MMU,MMU的作用
I. 什么是MMU,MMU的作用MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址 &O1663;&O1664; 物理地址的转换. 提供硬件机制的内存访问授权. 现 代的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标. 使用MMU, OS划分出一段地址区域, 在这块地址区转载 2011-11-18 16:31:35 · 177 阅读 · 0 评论 -
mmu和虚存
uClinux的嵌入 uClinux是专为无存储器管理单元(MMU)的微控制器打造的嵌入式Linux操作系统。uClinux首先被移植到摩托罗拉的MC68328 DragonBall集成微处理器上。从那以后, uClinux越来越受到业界的青睐, 被移植到更多的无MMU芯片上。目前,uClinux已成功移植到ARM7TDMI微处理器上。 由于uClinux主要是针对无MMU 微处理器开发的转载 2011-11-18 16:19:04 · 151 阅读 · 0 评论 -
Linux关机命令详解
在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的。1.shutdown shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统转载 2011-11-29 09:40:26 · 134 阅读 · 0 评论 -
LINUX下的文件结构
/bin 二进制可执行命令/dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序转载 2011-11-29 09:39:10 · 193 阅读 · 0 评论 -
Linux在指定目录下查找包含指定字符串的文件
第一种方法:#!/bin/bashecho -e "\nThis is a program to find the file in special directory which include keyword!\n\n"if [ "$1" == "" ]; then echo -e "Please input the keyword behind the $0\转载 2011-12-27 08:56:13 · 383 阅读 · 0 评论 -
Linux中索引节点的介绍
1、用ls -i命令来查看文件系统对象的索引节点号 $ ls -i /usr 558145 bin 607393 games 2429605 kerberos 705889 local 131329 share 32833 X11R6 574561 dict 623809 include 640225 lib原创 2012-01-30 14:23:15 · 369 阅读 · 0 评论 -
gethostbyname用法
使用这个东西,首先要包含2个头文件:#include #include struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。struct hostent {原创 2012-01-30 15:21:31 · 195 阅读 · 0 评论 -
linux线程函数大全
线程创建一个缺省的线程缺省的线程的属性:l 非绑定l 未分离l 一个缺省大小的堆栈l 具有和父线程一样的优先级 用 phread_attr_init() 创建一个缺省的属性对象,用属性对象创建一个线程 pthread_create(3T) int原创 2012-01-30 14:21:12 · 190 阅读 · 0 评论 -
CR, LF, CR/LF 回车 换行
“回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将原创 2012-01-30 14:27:13 · 234 阅读 · 0 评论 -
linux信号
各种SignalsSignalDescriptionSIGABRT由调用abort函数产生,进程非正常退出SIGALRM用alarm函数设置的timer超时或setitimer函数设置的interval timer超时SIGBUS某种特定的硬件异常,通常由内存访问引起原创 2012-01-30 09:55:57 · 174 阅读 · 0 评论 -
system返回值
system(执行shell 命令) 相关函数 fork,execve,waitpid,popen 表头文件 #include 定义函数 int system(const char * string); 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命原创 2012-01-30 14:22:22 · 260 阅读 · 0 评论 -
Linux内存管理-进程的五个数据段
进 程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。一、Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么原创 2012-01-30 14:24:17 · 287 阅读 · 0 评论 -
sprintf函数的用法
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [,原创 2012-01-30 14:26:40 · 122 阅读 · 0 评论 -
内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放原创 2012-01-30 14:27:46 · 207 阅读 · 0 评论 -
函数返回局部变量
1. 返回局部变量的值可以有两种情况:返回局部自动变量和局部静态变量,比如,?12345int func(){ int temp = 0; // 返回局部自动变量的值 return temp;}局部变量t原创 2012-11-02 09:54:50 · 264 阅读 · 0 评论