<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>转烛空间编程技术 &#187; </title>
	<atom:link href="http://wangliping.net/category/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://wangliping.net</link>
	<description>记录生活，学习技术</description>
	<lastBuildDate>Fri, 30 Jul 2010 02:30:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>实例解说 fdisk 使用方法</title>
		<link>http://wangliping.net/how-to-use-fdisk-in-linux</link>
		<comments>http://wangliping.net/how-to-use-fdisk-in-linux#comments</comments>
		<pubDate>Mon, 12 Apr 2010 03:58:36 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mount]]></category>

		<guid isPermaLink="false">http://wangliping.net/how-to-use-fdisk-in-linux</guid>
		<description><![CDATA[fdisk 是一款功能强大的分区工具，也是目前在Unix类操作系统中最流行的工具之一；分区工具老字号；本篇只介绍其最简单的分区操作功能]]></description>
			<content:encoded><![CDATA[<p><b>提要：</b>fdisk 是一款功能强大的分区工具，也是目前在Unix类操作系统中最流行的工具之一；分区工具老字号；本篇只介绍其最简单的分区操作功能。
<p><b><br />一、fdisk 的介绍；<br /></b>
<p><b>fdisk - Partition table manipulator for Linux</b> ，译成中文的意思是磁盘分区表操作工具；本人译的不太好，也没有看中文文档；其实就是分区工具；
</p>
<p><span id="more-652"></span>
<p>fdsik 能划分磁盘成为若干个区，同时也能为每个分区指定分区的文件系统，比如linux 、fat32、 linux 、linux swap 、fat16 以及其实类Unix类操作系统的文件系统等；当然我们用fdisk 对磁盘操作分区时，并不是一个终点，我们还要对分区进行格式化所需要的文件系统；这样一个分区才能使用；这和DOS中的fdisk 是类似的；
<p><b><br />二、合理规划您的硬盘分区；<br /></b><br />在操作分区之前，我们要明白硬盘分区一点理论，比如硬盘容量和分区大小的计算；对一个硬盘如何规划分区等，请参考如下文档，谢谢；
<p><a href="http://fedora.linuxsir.org/main/?q=node/80">《合理规划您的硬盘分区》</a>
<p><b><br />三、fdisk -l 查看硬盘及分区信息；<br /></b>
<p>通过<a href="http://fedora.linuxsir.org/main/?q=node/80">《合理规划您的硬盘分区》</a> ，我们知道主分区（包括扩展分区）的总个数不能超过四个；也不能把扩展分区包围在主分区之间；根据这个原则，我们划分硬盘分区就比较容易的多；也能为以后减少不必要的麻烦；
<p><b><br />1、通过fdisk -l 查看机器所挂硬盘个数及分区情况；<br /></b>
<p><code>[root@localhost beinan]# fdisk -l<br />Disk /dev/hda: 80.0 GB, 80026361856 bytes<br />255 heads, 63 sectors/track, 9729 cylinders<br />Units = cylinders of 16065 * 512 = 8225280 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/hda1&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 765&nbsp;&nbsp;&nbsp;&nbsp; 6144831&nbsp;&nbsp;&nbsp; 7&nbsp; HPFS/NTFS<br />/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 766&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2805&nbsp;&nbsp;&nbsp; 16386300&nbsp;&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 55617030&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3825&nbsp;&nbsp;&nbsp;&nbsp; 8193118+&nbsp; 83&nbsp; Linux<br />/dev/hda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3826&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5100&nbsp;&nbsp;&nbsp; 10241406&nbsp;&nbsp; 83&nbsp; Linux<br />/dev/hda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5198&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787153+&nbsp; 82&nbsp; Linux swap / Solaris<br />/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5199&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6657&nbsp;&nbsp;&nbsp; 11719386&nbsp;&nbsp; 83&nbsp; Linux<br />/dev/hda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6658&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7751&nbsp;&nbsp;&nbsp;&nbsp; 8787523+&nbsp; 83&nbsp; Linux<br />/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7752&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 15888253+&nbsp; 83&nbsp; Linux<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux</code>
<p>通过上面的信息，我们知道此机器中挂载两个硬盘（或移动硬盘），其中一个是hda 另一个是sda ；如果我们想查看单个硬盘情况，可以通过 fdisk -l /dev/hda1 或者fdisk -l /dev/sda1 来操作；以fdisk -l 输出的硬盘标识为准；
<p>其中 hda有三个主分区（包括扩展分区）,分别是主分区 hda1 hda2 和hda3（扩展分区） ；逻辑分区是 hda5到hda10；<br />其中 sda 有两个主分区（包括扩展分区），分别是 hda1 和hda2 (扩展分区）；逻辑分区是 sda5 hda6 ；
<p>硬盘总容量=主分区（包括扩展分区）总容量<br />扩展分区容量=逻辑分区总容量
<p>通过上面的例子，我们可以得知 hda=hda1+hda2+hda3，其中hda3=hda5+hda6+hda7+hda8+hda9+hda10 ... ...<br /><b><br />2、关于fdisk -l 一些数值的说明；<br /></b>
<p><code>Disk /dev/hda: 80.0 GB, 80026361856 bytes<br />255 heads, 63 sectors/track, 9729 cylinders<br />Units = cylinders of 16065 * 512 = 8225280 bytes</code>
<p>这个硬盘是80G的，有255个磁面；63个扇区；9729个磁柱；每个 cylinder（磁柱）的容量是 8225280 bytes=8225.280 K（约为）=8.225280M（约为）；
<p><code>分区序列&nbsp;&nbsp;&nbsp; 引导&nbsp;&nbsp;&nbsp; 开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终止&nbsp;&nbsp;&nbsp; 容量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分区类型ID&nbsp;&nbsp;&nbsp; 分区类型<br />Device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System<br />/dev/hda1&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 765&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6144831&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HPFS/NTFS<br />/dev/hda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 766&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2805&nbsp;&nbsp;&nbsp;&nbsp; 16386300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W95 FAT32 (LBA)<br />/dev/hda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 55617030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Extended<br />/dev/hda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3825&nbsp;&nbsp;&nbsp;&nbsp; 8193118+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<br />/dev/hda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3826&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5100&nbsp;&nbsp;&nbsp; 10241406&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<br />/dev/hda7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5198&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787153+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux swap / Solaris<br />/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5199&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6657&nbsp;&nbsp;&nbsp; 11719386&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<br />/dev/hda9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6658&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7751&nbsp;&nbsp;&nbsp;&nbsp; 8787523+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux<br />/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7752&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9729&nbsp;&nbsp;&nbsp; 15888253+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 83&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux</code>
<p><b>说明：</b>
<p>硬盘分区的表示：在Linux 是通过hd*x 或 sd*x 表示的，其中 * 表示的是a、b、c ... ... x表示的数字 1、2、3 ... ... hd大多是IDE硬盘；sd大多是SCSI或移动存储；<br />引导（Boot）：表示引导分区，在上面的例子中 hda1 是引导分区；<br />Start （开始）：表示的一个分区从X cylinder（磁柱）开始；<br />End （结束）：表示一个分区到 Y cylinder（磁柱）结束；<br />id和System 表示的是一个意思，id看起来不太直观，我们要在fdisk 一个分区时，通过指定id来确认分区类型；比如 7表示的就NTFS 分区；这个在fdisk 中要通过t功能来指定。下面的部份会提到；<br />Blocks（容量）：这是我翻译的，其实不准确，表示的意思的确是容量的意思，其单位是K；一个分区容量的值是由下面的公式而来的；
<p>Blocks = （相应分区End数值 - 相应分区Start数值）x 单位cylinder（磁柱）的容量
<p>所以我们算一下 hda1的 Blocks 的大小 ：
<p>hda1 Blocks=(765-1)x8225.280=6284113.92 K = 6284.113.92M
<p><b>注：</b>换算单位以硬盘厂家提供的10进位算起，如果以操作系统二进制来算，这个分区容量应该更少一些，得出的这个值和我们通过 fdisk -l 看到的 /dev/hda1的值是大体相当的，因为换算方法不一样，所以也不可能尽可能的精确；再加上分区时的一点损失之类，有时或大或小是存在的；
<p>我们查看分区大小或者文件的时候，还是用十进制来计算比较直观；推算办法是 byte 向前推小数点三位就是K ，K单位的值向前推小数点三位就是M，M向前推小数点三位就是G... ... 一般也差不了多少；这么算就行；
<p><b><br />3、估算一个存储设备是否被完全划分；<br /></b><br />我们估算一个硬盘是否完全被划分，我们只要看 fdisk -l 输出的内容中的 cylinders（柱体） 上一个分区的End 和 下一个分区的Start是不是一个连续的数字，另外要看一下每个硬盘设备的fdisk -l 的开头部份，看一下他的 cylinders（柱体）的值；
<p>比如hda设备，我们看到的是 9729 cylinders ；我们通过 hda的分区表可以看到上一个分区的End的值+1 就是下一个分区的Start 的值；比如 hda2的Start的值是 hda1 的End 的值+1，这证明 hda1 和hda2 中间没有空白分区，是连续的，以此类推；在 hda10，我们看到 End 的值是9729 ，而在fdisk -l头部信息中也有9729 cylinders，证明这个硬盘已经完全划分；
<p><code>Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux</code>
<p>我们再看看 sda 移动储是不是被完全划分了；sda有 125个cylinders （柱体），有一个主分区和一个扩展分区构成；在扩展分区中，我们看到End的值为125,而这个移动硬盘的cylinder也是125，这能说明这个硬盘不可能再添加任何主分区了；根据我们上面所说的 sda1 sda2 sda5 sda6 之间未有任何未划分空间，但sda6 的cylinders （柱体）的End值却是 76 ，而 sda总的cylinders （柱体）有125个，由此看来sda 在 sda6后面有未划分区域；
<p>至于sda 有多少未划分空间，我们算一下就知道了；扩展分区总容量是 806400 K ，大约是 806.400M左右，而逻辑分区 sda5 和sda6 的大小加起来是 400M左右，所以还仍有400M左右未划分空间，并且只能划分为链逻辑分区；
<p><b><br />四、fdisk 对硬盘及分区的操作，进入fdisk 对硬盘操作阶段；<br /></b>
<p>我们可以对硬盘进行分区操作，前提是您把fdisk -l 弄明白了；通过fdisk -l ，我们能找出机器中所有硬盘个数及设备名称；比如上面的例子，我们会看到两个设备一个是/dev/hda ，另一个是/dev/sda ；<br /><b><br />fdisk 操作硬盘的命令格式如下：<br /></b>
<p><code>[root@localhost beinan]# fdisk&nbsp;&nbsp;&nbsp; 设备 </code>
<p>比如我们通过 fdisk -l 得知 /dev/hda 或者 /dev/sda设备；我们如果想再添加或者删除一些分区，可以用
<p><code>[root@localhost beinan]# fdisk&nbsp;&nbsp;&nbsp;&nbsp; /dev/hda<br />或<br />[root@localhost beinan]# fdisk&nbsp; /dev/sda </code>
<p><b>注</b> 在以后的例子中，我们要以 /dev/sda设备为例，来讲解如何用fdisk 来操作添加、删除分区等动作；<br /><b><br />1、fdisk 的说明；<br /></b><br />当我们通过 fdisk 设备，进入相应设备的操作时，会发现有如下的提示；以 fdisk /dev/sda 设备为例，以下同；
<p><code>[root@localhost beinan]# fdisk /dev/sda<br />Command (m for help):&nbsp; 在这里按m ，就会输出帮助；<br />Command action<br />&nbsp;&nbsp; a&nbsp;&nbsp; toggle a bootable flag<br />&nbsp;&nbsp; b&nbsp;&nbsp; edit bsd disklabel<br />&nbsp;&nbsp; c&nbsp;&nbsp; toggle the dos compatibility flag<br />&nbsp;&nbsp; d&nbsp;&nbsp; delete a partition&nbsp;&nbsp; 注：这是删除一个分区的动作；<br />&nbsp;&nbsp; l&nbsp;&nbsp; list known partition types&nbsp; 注：l是列出分区类型，以供我们设置相应分区的类型；<br />&nbsp;&nbsp; m&nbsp;&nbsp; print this menu&nbsp; 注：m 是列出帮助信息；<br />&nbsp;&nbsp; n&nbsp;&nbsp; add a new partition 注：添加一个分区；<br />&nbsp;&nbsp; o&nbsp;&nbsp; create a new empty DOS partition table <br />&nbsp;&nbsp; p&nbsp;&nbsp; print the partition table 注：p列出分区表；<br />&nbsp;&nbsp; q&nbsp;&nbsp; quit without saving changes 注：不保存退出；<br />&nbsp;&nbsp; s&nbsp;&nbsp; create a new empty Sun disklabel&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; t&nbsp;&nbsp; change a partition's system id&nbsp; 注：t 改变分区类型；<br />&nbsp;&nbsp; u&nbsp;&nbsp; change display/entry units&nbsp; <br />&nbsp;&nbsp; v&nbsp;&nbsp; verify the partition table<br />&nbsp;&nbsp; w&nbsp;&nbsp; write table to disk and exit&nbsp; 注：把分区表写入硬盘并退出；<br />&nbsp;&nbsp; x&nbsp;&nbsp; extra functionality (experts only)&nbsp; 注：扩展应用，专家功能；</code>
<p>其实我们常用的只有注有中文的，其它的功能我们不常用（呵，主要是我不会用，否则早会卖弄一下了）；x扩展功能，也不是常用的；一般的情况下只要懂得 d l m p q t w 就行了；
<p>下面以实例操作来详述，没有例子没有办法就，新手也看不懂；<br /><b><br />2、列出当前操作硬盘的分区情况，用p；<br /></b>
<p><code>Command (m for help): p<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux</code>
<p><b><br />3、通过fdisk的d指令来删除一个分区；<br /></b>
<p><code>Command (m for help): p&nbsp;&nbsp;&nbsp; 注：列出分区情况；<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 200781&nbsp;&nbsp; 83&nbsp; Linux<br />Command (m for help): d 注：执行删除分区指定；<br />Partition number (1-6): 6&nbsp; 注：我想删除 sda6 ，就在这里输入 6 ；<br />Command (m for help): p 注：再查看一下硬盘分区情况，看是否删除了？<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />Command (m for help):</code>
<p><b>警告：</b>删除分区时要小心，请看好分区的序号，如果您删除了扩展分区，扩展分区之下的逻辑分区都会删除；所以操作时一定要小心；如果知道自己操作错了，请不要惊慌，用q不保存退出；切记切记！！！！在分区操作错了之时，千万不要输入w 保存退出！！！<br /><b><br />4、通过fdisk的n指令增加一个分区；<br /></b>
<p><code>Command (m for help): p<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />Command (m for help): n&nbsp; 注：增加一个分区；<br />Command action<br />&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)&nbsp; 注：增加逻辑分区，分区编号要大于5；为什么要大于5，因为已经有sda5了；<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4) 注：增加一个主分区；编号从 1-4 ；但sda1 和sda2都被占用，所以只能从3开始；<br />p<br />Partition number (1-4): 3<br />No free sectors available&nbsp; 注：失败中，为什么失败？</code>
<p>注：我试图增加一个主分区，看来是失败了，为什么失败？因为我们看到主分区+扩展分区把整个磁盘都用光了，看扩展分区的End的值，再看一下 p输出信息中有125 cylinders；最好还是看前面部份；那里有提到；
<p>所以我们只能增加逻辑分区了；
<p><code>Command (m for help): n<br />Command action<br />&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />l&nbsp;&nbsp; 注：在这里输入l，就进入划分逻辑分区阶段了；<br />First cylinder (51-125, default 51):&nbsp;&nbsp; 注：这个就是分区的Start 值；这里最好直接按回车，如果您输入了一个非默认的数字，会造成空间浪费；<br />Using default value 51<br />Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M&nbsp; 注：这个是定义分区大小的，+200M 就是大小为200M ；当然您也可以根据p提示的单位cylinder的大小来算，然后来指定 End的数值。回头看看是怎么算的；还是用+200M这个办法来添加，这样能直观一点。如果您想添加一个10G左右大小的分区，请输入 +10000M ；<br />Command (m for help):</code>
<p><b><br />5、通过fdisk的t指令指定分区类型；<br /></b>
<p><code>Command (m for help): t&nbsp; 注：通过t来指定分区类型；<br />Partition number (1-6): 6 注：要改变哪个分区类型呢？我指定了6，其实也就是sda6<br />Hex code (type L to list codes):L&nbsp; 注：在这里输入L，就可以查看分区类型的id了；<br />Hex code (type L to list codes): b&nbsp; 注：如果我想让这个分区是 W95 FAT32 类型的，通过L查看得知 b是表示的是，所以输入了b；<br />Changed system type of partition 6 to b (W95 FAT32)&nbsp; 注：系统信息，改变成功；是否是改变了，请用p查看；<br />Command (m for help): p<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; c&nbsp; W95 FAT32 (LBA)<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 806400&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp;&nbsp; b&nbsp; W95 FAT32</code>
<p><b><br />6、fdisk 的退出，用q或者 w；<br /></b><br />其中 q是 不保存退出，w是保存退出；
<p><code>Command (m for help): w<br />或 <br />Command (m for help): q</code>
<p><b><br />7、一个添加分区的例子；<br /></b><br />本例中我们会添加两个200M的主分区，其它为扩展分区，在扩展分区中我们添加两个200M大小的逻辑分区；
<p><code>Command (m for help): p 注：列出分区表；<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />Command (m for help): n 注：添加分区；<br />Command action<br />&nbsp;&nbsp; e&nbsp;&nbsp; extended<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />p&nbsp; 注：添加主分区；<br />Partition number (1-4): 1&nbsp;&nbsp; 注：添加主分区1；<br />First cylinder (1-125, default 1):&nbsp;&nbsp; 注：直接回车，主分区1的起始位置；默认为1,默认就好；<br />Using default value 1<br />Last cylinder or +size or +sizeM or +sizeK (1-125, default 125): +200M&nbsp;&nbsp; 注：指定分区大小，用+200M来指定大小为200M<br />Command (m for help): n&nbsp; 注：添加新分区；<br />Command action<br />&nbsp;&nbsp; e&nbsp;&nbsp; extended<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />p&nbsp; 注：添加主分区<br />Partition number (1-4): 2&nbsp; 注：添加主分区2；<br />First cylinder (26-125, default 26):<br />Using default value 26<br />Last cylinder or +size or +sizeM or +sizeK (26-125, default 125): +200M 注：指定分区大小，用+200M来指定大小为200M<br />Command (m for help): n<br />Command action<br />&nbsp;&nbsp; e&nbsp;&nbsp; extended<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />e&nbsp; 注：添加扩展分区；<br />Partition number (1-4): 3&nbsp; 注：指定为3 ，因为主分区已经分了两个了，这个也算主分区，从3开始；<br />First cylinder (51-125, default 51):&nbsp; 注：直接回车；<br />Using default value 51<br />Last cylinder or +size or +sizeM or +sizeK (51-125, default 125):&nbsp;&nbsp; 注：直接回车，把其余的所有空间都给扩展分区；<br />Using default value 125<br />Command (m for help): p<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201600&nbsp;&nbsp; 83&nbsp; Linux<br />/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 604800&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />Command (m for help): n<br />Command action<br />&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />l&nbsp; 注：添加逻辑分区；<br />First cylinder (51-125, default 51):<br />Using default value 51<br />Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M&nbsp; 注：添加一个大小为200M大小的分区；<br />Command (m for help): n<br />Command action<br />&nbsp;&nbsp; l&nbsp;&nbsp; logical (5 or over)<br />&nbsp;&nbsp; p&nbsp;&nbsp; primary partition (1-4)<br />l&nbsp; 注：添加一个逻辑分区；<br />First cylinder (76-125, default 76):<br />Using default value 76<br />Last cylinder or +size or +sizeM or +sizeK (76-125, default 125): +200M 注：添加一个大小为200M大小的分区；<br />Command (m for help): p&nbsp; 列出分区表；<br />Disk /dev/sda: 1035 MB, 1035730944 bytes<br />256 heads, 63 sectors/track, 125 cylinders<br />Units = cylinders of 16128 * 512 = 8257536 bytes<br />&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks&nbsp;&nbsp; Id&nbsp; System<br />/dev/sda1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201600&nbsp;&nbsp; 83&nbsp; Linux<br />/dev/sda3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 604800&nbsp;&nbsp;&nbsp; 5&nbsp; Extended<br />/dev/sda5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 75&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 76&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 201568+&nbsp; 83&nbsp; Linux</code>
<p>然后我们根据前面所说通过t指令来改变分区类型；
<p>最后不要忘记w保存退出；
<p><b><br />五、对分区进行格式化，以及加载;<br /></b>
<p>先提示一下；用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区，比如我想格式化 sda6为ext3文件系统，则输入；
<p><code>[root@localhost beinan]# mkfs.ext3 /dev/sda6</code>
<p>如果我想加载 sda6到目前系统来存取文件，应该有mount 命令，但首先您得建一个挂载目录；比如 /mnt/sda6 ；
<p><code>[root@localhost beinan]# mkdir /mnt/sda6<br />[root@localhost beinan]# mount /dev/sda6 /mnt/sda6<br />[root@localhost beinan]# df -lh<br />Filesystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 容量&nbsp; 已用 可用 已用% 挂载点<br />/dev/hda8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11G&nbsp; 8.4G&nbsp; 2.0G&nbsp; 81% /<br />/dev/shm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 236M&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 236M&nbsp;&nbsp; 0% /dev/shm<br />/dev/hda10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16G&nbsp; 6.9G&nbsp; 8.3G&nbsp; 46% /mnt/hda10<br />/dev/sda6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 191M&nbsp; 5.6M&nbsp; 176M&nbsp;&nbsp; 4% /mnt/sda6</code>
<p>这样我们就能进入 /mnt/sda6目录，然后存取文件了；
<p>具体的权限方法，以及mount 更详细的用法，在以后我会专门写一个帖子；在一帖中放下所有的内容实在有点为难；
<p><strong>原文</strong>：<a title="http://fedora.linuxsir.org/main/?q=node/81" href="http://fedora.linuxsir.org/main/?q=node/81">http://fedora.linuxsir.org/main/?q=node/81</a>
<p><strong>转烛补充：</strong>
<p>我主要是利用它进行分区合并操作。因为我在安装时分了几个区，现在想把/dev/sda5和/dev/sda6合并，搜了一些资料说用gparted这个工具很不错（后来证实这个工具的确不错），不过如果能用自带的工具而不用另外安装当然是最好的。先是用d命令删除了两个分区，重启，然后用n命令将剩余的空间创建了一个分区，用的都是默认值，即将全部剩余空间放到新的分区，然后再重启。然后利用gparted给新的分区改了个label（此处你也没必要做），再然后仍然利用gparted查看了一下新分区的uuid，在/etc/fstab里将这个挂载到/media/disk下。以上修改label和查看uuid应该可以不用gparted的，但是一时没找到命令，而正好又装了，所以就用上了。然后再重启，OK了。
<p>再补充：ls -al /dev/disk/by-uuid 可以查看uuid</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/linux_mount_usb" title="Linux如何mount Usb盘">Linux如何mount Usb盘</a></li><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li><li><a href="http://wangliping.net/source-insight-see-source-code" title="Source-Insight-看大规模大工程源代码">Source-Insight-看大规模大工程源代码</a></li><li><a href="http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen" title="Linux下测试键盘鼠标触摸屏触摸板">Linux下测试键盘鼠标触摸屏触摸板</a></li><li><a href="http://wangliping.net/linux_mem_info_watch" title="Linux内存信息查看相关">Linux内存信息查看相关</a></li><li><a href="http://wangliping.net/how_to_add_swap_method" title="Linux中增加Swap的方法">Linux中增加Swap的方法</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/how-to-use-fdisk-in-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C语言实现文件查找操作</title>
		<link>http://wangliping.net/c-file-find-out</link>
		<comments>http://wangliping.net/c-file-find-out#comments</comments>
		<pubDate>Thu, 11 Mar 2010 04:51:47 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://wangliping.net/c-file-find-out</guid>
		<description><![CDATA[在文件操作过程中，免不得要去查找文件之类的。虽然说Windows的API提供了不少这样的接口，但是还是比较倾向于C和C++之类的库。以下就用例子来做这样的工作，程序本身当然还有不少不成熟之处，编译工具用的是Dev C++，编译环境建立在WindowsXP上。]]></description>
			<content:encoded><![CDATA[<p>　　在文件操作过程中，免不得要去查找文件之类的。虽然说Windows的API提供了不少这样的接口，但是还是比较倾向于C和C++之类的库。以下就用例子来做这样的工作，程序本身当然还有不少不成熟之处，编译工具用的是Dev C++，编译环境建立在WindowsXP上。</p>
<p><span id="more-648"></span>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,128,128)">#include &lt;cstdlib&gt;</span><br /><span style="color: rgb(0,128,128)">#include &lt;iostream&gt;</span><br /><span style="color: rgb(0,128,128)">#include &lt;string.h&gt;&nbsp; </span><br /><span style="color: rgb(0,128,128)">#include &lt;dir.h&gt;</span></p>
<p><span style="color: rgb(0,0,0)">using</span> <span style="color: rgb(0,0,0)">namespace</span> <span style="color: rgb(0,0,0)">std</span>;</p>
<p><span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">main</span>(<span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">argc</span><span style="color: rgb(0,0,0)">,</span> <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">*</span><span style="color: rgb(0,0,0)">argv</span><span style="color: rgb(0,0,0)">[])</span><br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">struct</span> <span style="color: rgb(0,0,0)">_finddata_t</span> <span style="color: rgb(0,0,0)">myfile</span>;<br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">[</span><span style="color: rgb(0,0,255)">256</span><span style="color: rgb(0,0,0)">];</span><br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">char</span> <span style="color: rgb(0,0,0)">extension</span><span style="color: rgb(0,0,0)">[</span><span style="color: rgb(0,0,255)">20</span><span style="color: rgb(0,0,0)">];</span><br />&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"Please input the extension of the file: "</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">scanf</span>(<span style="color: rgb(0,0,255)">"%s"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">sprintf</span>(<span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">"D:</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">Work</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">*.%s"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"List of the .%s files:</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">extension</span>);<br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">long</span>&nbsp; <span style="color: rgb(0,0,0)">done</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">_findfirst</span>(<span style="color: rgb(0,0,0)">path</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&amp;</span><span style="color: rgb(0,0,0)">myfile</span>);&nbsp; <br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">int</span>&nbsp;&nbsp; <span style="color: rgb(0,0,0)">find</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,255)">0</span>; <br />&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">while</span> (<span style="color: rgb(0,0,0)">!</span><span style="color: rgb(0,0,0)">find</span>)<br />&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">if</span> (<span style="color: rgb(0,0,0)">strcmp</span>(<span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">"."</span>) <span style="color: rgb(0,0,0)">&amp;&amp;</span> <span style="color: rgb(0,0,0)">strcmp</span>(<span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,255)">".."</span>))&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"%s</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">myfile</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">name</span>);&nbsp; <br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">find</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">_findnext</span>(<span style="color: rgb(0,0,0)">done</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">&amp;</span><span style="color: rgb(0,0,0)">myfile</span>);&nbsp;&nbsp;&nbsp; <br />&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp; <span style="color: rgb(0,0,0)">_findclose</span>(<span style="color: rgb(0,0,0)">done</span>);<br />&nbsp; <span style="color: rgb(0,0,0)">system</span>(<span style="color: rgb(0,0,255)">"PAUSE"</span>);</p>
<p>&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">return</span> <span style="color: rgb(0,0,255)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></div>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,0,0)"></span>&nbsp;</div>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,0,0)"></span></div>
<p>　　如果是在Linux环境下运行，可能会提示找不到dir.h文件，所以还是在Windows下编译运行吧。下面给一个列出文件目录下所有文件的程序，可以在Windows和Linux都能运行。</p>
<p>
<div class="source" style="color: rgb(0,0,0); font-family: '[object HTMLOptionElement]','Consolas','Lucida Console','Courier New'"><span style="color: rgb(0,128,128)">#include &lt;dirent.h&gt;</span></p>
<p><span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">main</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">DIR</span> <span style="color: rgb(0,0,0)">*</span> <span style="color: rgb(0,0,0)">dir</span>;<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">struct</span> <span style="color: rgb(0,0,0)">dirent</span> <span style="color: rgb(0,0,0)">*</span> <span style="color: rgb(0,0,0)">ptr</span>;<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">int</span> <span style="color: rgb(0,0,0)">i</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">dir</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">opendir</span>(<span style="color: rgb(0,0,255)">"D:</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">Work</span><span style="color: rgb(0,0,255)">\\</span><span style="color: rgb(0,0,255)">"</span>);<br />&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: rgb(0,0,128)">while</span>(<span style="color: rgb(0,0,0)">ptr</span> <span style="color: rgb(0,0,0)">=</span> <span style="color: rgb(0,0,0)">readdir</span>(<span style="color: rgb(0,0,0)">dir</span>)) <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(0,0,255)">"file name: %s</span><span style="color: rgb(0,0,255)">\n</span><span style="color: rgb(0,0,255)">"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">ptr</span><span style="color: rgb(0,0,0)">-&gt;</span><span style="color: rgb(0,0,0)">d_name</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">closedir</span>(<span style="color: rgb(0,0,0)">dir</span>);<br /><span style="color: rgb(0,0,0)">}</span></div>
</p>
<p>　　以上这个参考过别人的程序，大家如果有更多的指教请多多指出。</p>
<p align="center"><strong>原创文章，如需转载请注明【</strong><a href="http://wangliping.net"><strong>转烛空间</strong></a><strong>】：</strong><a href="http://wangliping.net"><strong>http://wangliping.net</strong></a><strong> </strong>
<p align="center"><strong>本文地址：</strong><a href="http://wangliping.net/c-file-find-out"><strong>http://wangliping.net/c-file-find-out</strong></a></p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li><li><a href="http://wangliping.net/cpp-link-sort-override-wrfile" title="C++单链表冒泡排序、运算符重载和文件读写">C++单链表冒泡排序、运算符重载和文件读写</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/c-file-find-out/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>apt-get install 111 connection refused</title>
		<link>http://wangliping.net/apt-get-install-111-connection-refused</link>
		<comments>http://wangliping.net/apt-get-install-111-connection-refused#comments</comments>
		<pubDate>Fri, 05 Mar 2010 07:47:00 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[apt apt-get install error proxy]]></category>

		<guid isPermaLink="false">http://wangliping.net/apt-get-install-111-connection-refused</guid>
		<description><![CDATA[在Ubuntu下，安装软件老是出这个错误，而且还能ping通，以往都没问题的，于是到处搜索，终于经过一点点的提示，解决了这个问题。

　　这个问题的出现，在网络正常的情况下，是由于代理设置的问题。一般内网用户都要通过代理出去，虽然你在通过Network Proxy设置了代理，还勾选了全部使用，但也不一定管用（很多时候是管用的）。用apt-get的时候，貌似还是要直连出去（以前其实不是这样的），这个时候就必须给apt-get设置代理了。你可以用grep –re http_proxy /etc发现apt需要代理，但是echo $http_proxy却没有设置，那问题就出来了，知道了问题，也容易解决了。]]></description>
			<content:encoded><![CDATA[<p>　　在Ubuntu下，安装软件老是出这个错误，而且还能ping通，以往都没问题的，于是到处搜索，终于经过一点点的提示，解决了这个问题。</p>
<p>　　这个问题的出现，在网络正常的情况下，是由于代理设置的问题。一般内网用户都要通过代理出去，虽然你在通过Network Proxy设置了代理，还勾选了全部使用，但也不一定管用（很多时候是管用的）。用apt-get的时候，貌似还是要直连出去（以前其实不是这样的），这个时候就必须给apt-get设置代理了。你可以用grep –re http_proxy /etc发现apt需要代理，但是echo $http_proxy却没有设置，那问题就出来了，知道了问题，也容易解决了。</p>
</p>
<p><span id="more-646"></span>
<p>　　设置代理的方法：</p>
<blockquote><p>export http_proxy=http://ip:port</p>
</blockquote>
<p>　　当然这个是临时用的，关机重启之后就没有了。记得设置了之后，要关闭终端，再开启另一个终端。</p>
<p>　　如果要设置永久性的，可以设置环境变量：</p>
<blockquote><p>vi $HOME/.bashrc</p>
</blockquote>
<p>　　在最后文件的最后可以添加</p>
<blockquote><p>http_proxy=http://ip:port</p>
<p>export http_proxy</p>
</blockquote>
<p>　　同样记得设置了之后，关闭终端，再开启另一个终端，然后去安装你的软件。</p>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://wangliping.net/perfect_tianxie" title="十二星座终极完美分析&#8211;天蝎篇">十二星座终极完美分析&#8211;天蝎篇</a></li><li><a href="http://wangliping.net/she-was-suffering-from-infectious-diseases-but-she-concealed-her-boyfriend-reproduced" title="她身患传染病，但她隐瞒了她的男友(转载)">她身患传染病，但她隐瞒了她的男友(转载)</a></li><li><a href="http://wangliping.net/lipeigen_talk_online_all_q_and_a" title="李培根网友交流会问答全文整理">李培根网友交流会问答全文整理</a></li><li><a href="http://wangliping.net/linux_grep" title="linux下全目录全文搜索强大工具grep">linux下全目录全文搜索强大工具grep</a></li><li><a href="http://wangliping.net/7" title="【容融文学】连载（七）">【容融文学】连载（七）</a></li><li><a href="http://wangliping.net/movie-critic-love-in-the-city" title="【影评 男才女貌】至纯至真的感动">【影评 男才女貌】至纯至真的感动</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/apt-get-install-111-connection-refused/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git-clone指定branch</title>
		<link>http://wangliping.net/git-clone-spec-branch</link>
		<comments>http://wangliping.net/git-clone-spec-branch#comments</comments>
		<pubDate>Thu, 04 Feb 2010 06:11:38 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://wangliping.net/git-clone-spec-branch</guid>
		<description><![CDATA[有时git clone下来会出现很多branch，更麻烦的是如果主分支没代码那你就只能看到.git目录了。如下面的这个:

$ git clone git://gitorious.org/android-eeepc/mesa.git]]></description>
			<content:encoded><![CDATA[<p>（仅作备忘笔记）</p>
<p>　　有时git clone下来会出现很多branch，更麻烦的是如果主分支没代码那你就只能看到.git目录了。如下面的这个:</p>
<blockquote><p><code>$ git clone <a href="git://gitorious.org/android-eeepc/mesa.git">git://gitorious.org/android-eeepc/mesa.git</a></code></p>
</blockquote>
<p><span id="more-645"></span>
<p>　　发现本地就只有一个.git目录，那么这个时候就需要checkout了。</p>
<p>　　进入你的本地目录，如这个是mesa，利用</p>
<blockquote><p>$ git branch –r</p>
</blockquote>
<p>　　查看branch信息（当然你也可以用git show-branch查看，不过有时并不好用），获得如下branch信息：</p>
<blockquote><p>origin/android<br />origin/mesa-es<br />origin/mesa-es-dri </p>
</blockquote>
<p>　　此时我们需要的是android分支的代码，那么此时就要进行checkout了。<br />
<blockquote>
<p>$ git checkout origin/android</p>
</blockquote>
<p>　　你再看你的目录（mesa）下是不是有了代码了？其它的branch同理。</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/git" title="Linux下git简单使用教程（以Android为例）">Linux下git简单使用教程（以Android为例）</a></li><li><a href="http://wangliping.net/android-add-shortcut" title="Android添加桌面快捷图标">Android添加桌面快捷图标</a></li><li><a href="http://wangliping.net/android-ksoap2-weather" title="Android利用ksoap2写天气预报应用">Android利用ksoap2写天气预报应用</a></li><li><a href="http://wangliping.net/android-buttonbar-bottom" title="Android将ButtonBar放在屏幕底部">Android将ButtonBar放在屏幕底部</a></li><li><a href="http://wangliping.net/android-tab-bottom" title="Android将TAB选项卡放在屏幕底部">Android将TAB选项卡放在屏幕底部</a></li><li><a href="http://wangliping.net/android-x86-donut-r2" title="Android-x86 1.6-r2 釋出">Android-x86 1.6-r2 釋出</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/git-clone-spec-branch/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C语言查看和更改文件的权限</title>
		<link>http://wangliping.net/c-change-file-permission</link>
		<comments>http://wangliping.net/c-change-file-permission#comments</comments>
		<pubDate>Mon, 25 Jan 2010 08:55:44 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[chmod]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://wangliping.net/c-change-file-permission</guid>
		<description><![CDATA[有时候需要在程序里获得某个文件的权限信息，正如在Linux下用ls -l命令可以查看权限，那么在C语言中同样有函数可以实现这样的功能。]]></description>
			<content:encoded><![CDATA[<p>　　有时候需要在程序里获得某个文件的权限信息，正如在Linux下用ls -l命令可以查看权限，那么在C语言中同样有函数可以实现这样的功能。</p>
</p>
<p><span id="more-619"></span><br />
<blockquote>
<p>#include &lt;stdio.h&gt;<br />#include &lt;sys/stat.h&gt;
<p>void main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *fileName = "/home/user/test/myfile";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct stat fileInfo;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (stat(fileName, &amp;fileInfo) &lt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int mask = 0000777;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned int access = mask &amp; fileInfo.st_mode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%o\n%d\n", access, fileInfo.st_uid);<br />}</p>
</blockquote>
<p>　　关于更多的信息，诸如用户和组的信息，fileInfo.st_uid等等，可以查询stat结构，里面有很多的信息。</p>
<blockquote><p>struct&nbsp; stat<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; dev_t&nbsp;&nbsp;&nbsp; st_dev;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*device*/<br />&nbsp;&nbsp;&nbsp;&nbsp; ino_t&nbsp;&nbsp;&nbsp;&nbsp; st_ino;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*inode*/<br />&nbsp;&nbsp;&nbsp;&nbsp; mode_t st_mode;&nbsp;&nbsp;&nbsp; /*protection*/<br />&nbsp;&nbsp;&nbsp;&nbsp; nlink_t&nbsp;&nbsp; st_nlink;&nbsp;&nbsp;&nbsp;&nbsp; /*number of hard&nbsp; links */<br />&nbsp;&nbsp;&nbsp;&nbsp; uid_t&nbsp;&nbsp;&nbsp;&nbsp; st_uid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*user ID of owner*/<br />&nbsp;&nbsp;&nbsp;&nbsp; gid_t&nbsp;&nbsp;&nbsp;&nbsp; st_gid;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*group ID of owner*/<br />&nbsp;&nbsp;&nbsp;&nbsp; dev_t&nbsp;&nbsp;&nbsp; st_rdev;&nbsp;&nbsp;&nbsp;&nbsp; /*device type (if inodedevice)*/<br />&nbsp;&nbsp;&nbsp;&nbsp; off_t&nbsp;&nbsp;&nbsp;&nbsp; st_size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*total size,&nbsp; in bytes*/<br />&nbsp;&nbsp;&nbsp;&nbsp; unsigned long&nbsp; st_blksize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*blocksize for filesystem I/O*/<br />&nbsp;&nbsp;&nbsp;&nbsp; unsigned long&nbsp; st_blocks;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* number of blocks allocated*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_atime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last access*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_mtime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last modification*/<br />&nbsp;&nbsp;&nbsp;&nbsp; time_t&nbsp;&nbsp; st_ctime;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*time of last change*/<br />};</p>
</blockquote>
<p>　　当然你也可能更改文件的权限信息，譬如本来一个文件是0600的权限，你想更改为0644的权限，即如同Linux下chmod命令。在Linux下我们可以用：<br />
<blockquote>
<p>#chmod 0644 myfile</p>
</blockquote>
<p>　　来更改文件的权限，那么在C语言下，其实也提供了类似的函数。<br />
<blockquote>
<p>#include &lt;stdio.h&gt;<br />#include &lt;sys/stat.h&gt;
<p>void main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *fileName = "/home/user/test/myfile";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chmod(fileName, 0644);<br />}</p>
</blockquote>
<p>　　其实呢，还有<a href="http://man.chinaunix.net/develop/c&amp;c++/linux_c/main.htm" target="_blank">更多的函数</a>，跟Linux里的命令很相近。</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/how-to-use-fdisk-in-linux" title="实例解说 fdisk 使用方法">实例解说 fdisk 使用方法</a></li><li><a href="http://wangliping.net/c-file-find-out" title="C语言实现文件查找操作">C语言实现文件查找操作</a></li><li><a href="http://wangliping.net/source-insight-see-source-code" title="Source-Insight-看大规模大工程源代码">Source-Insight-看大规模大工程源代码</a></li><li><a href="http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen" title="Linux下测试键盘鼠标触摸屏触摸板">Linux下测试键盘鼠标触摸屏触摸板</a></li><li><a href="http://wangliping.net/cpp-link-sort-override-wrfile" title="C++单链表冒泡排序、运算符重载和文件读写">C++单链表冒泡排序、运算符重载和文件读写</a></li><li><a href="http://wangliping.net/linux_mem_info_watch" title="Linux内存信息查看相关">Linux内存信息查看相关</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/c-change-file-permission/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Source-Insight-看大规模大工程源代码</title>
		<link>http://wangliping.net/source-insight-see-source-code</link>
		<comments>http://wangliping.net/source-insight-see-source-code#comments</comments>
		<pubDate>Thu, 07 Jan 2010 08:49:20 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android-x86]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[Source-Insight]]></category>

		<guid isPermaLink="false">http://wangliping.net/source-insight-see-source-code</guid>
		<description><![CDATA[如果你只是看或者编写一个小应用，这个东西当然还没有UltraEdit好，但是你要管理成百上千，成千上万的代码，那你最好还是考虑一下这个吧，UltraEdit此时只能是束手无策或者是黔驴技穷了。你估计想说，有那么多文件需要管理吗？其实，最简单最广泛的，Linux的Kernel就是一个典型的例子。解压后的代码都有几百M，你说你怎么看？说实话最初我不知道这软件的时候，是一个目录一个目录，一个文件一个文件看的。]]></description>
			<content:encoded><![CDATA[<p>　　如果你只是看或者编写一个小应用，这个东西当然还没有UltraEdit好，但是你要管理成百上千，成千上万的代码，那你最好还是考虑一下这个吧，UltraEdit此时只能是束手无策或者是黔驴技穷了。你估计想说，有那么多文件需要管理吗？其实，最简单最广泛的，Linux的Kernel就是一个典型的例子。解压后的代码都有几百M，你说你怎么看？说实话最初我不知道这软件的时候，是一个目录一个目录，一个文件一个文件看的。</p>
<p><span id="more-599"></span>　　然而你要知道，翻目录翻文件，你的确需要毅力。还有就是想找一个文件，你又得用find，找一个函数你还得有search，更或者要用grep，如此这般。然后你想知道一个函数被谁调用，你却无从下手，然后你想知道一个变量怎么改变的，你依然要费大力气。那么，就从这些劳动中解脱出来吧，用上Source Insight或许就可以减轻你这样的负担了。</p>
<p>　　原来看Android的源码树时，用的是Eclipse，当时觉得挺好用的。但是后来发现Eclair居然不能导入到Eclipse。得，本来也觉得Eclipse不能很好地看C代码很不爽，那么就用SourceInsight吧。全部导入并sync后，发现貌似SourceInsight看源码树比Eclipse还好一些，特别是最近几乎看的都是C和C++部分的代码，其实对于Java代码也一样好。可以在代码间跳转，可以很快地定位需要的文件，虽然不能完全所有想定位的都能定位，但已经足以比Eclipse好一些了。</p>
<p>　　建议看源代码时，要将代码sync一下，这样就可以跳转了。虽然这样要花费较多的时间去sync，花费较多的磁盘空间，不过，磁盘嘛，1G总是相对比较少的，时间嘛，花一次这样的时间，以后都方便还是很好的。而且这个软件还是免费的，最初看到这个软件的推荐是在IBM的开发网站上，呵～IBM推荐的，也可以让大家信任吧。截图看一下：</p>
<p><a href="http://pimg.swodestatic.com/NjQxMTc3Nixzd2FuZGxl.jpg" target="_blank"><img style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" title="Source-Insight" src="http://pimg.swodestatic.com/NjQxMTc3Nixzd2FuZGxl_medium.jpg" border="0" alt="Source-Insight" width="484" height="295" /></a></p>
<p align="center"><strong>原创文章，如需转载请注明【</strong><a href="http://wangliping.net" target="_blank"><strong>转烛空间</strong></a><strong>】：</strong><a href="http://wangliping.net"><strong>http://wangliping.net</strong></a></p>
<p align="center"><strong>本文地址：</strong><a href="http://wangliping.net/source-insight-see-source-code"><strong>http://wangliping.net/source-insight-see-source-code</strong></a></p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/android-x86-donut-r2" title="Android-x86 1.6-r2 釋出">Android-x86 1.6-r2 釋出</a></li><li><a href="http://wangliping.net/android-x86-20-eclair-release" title="Android-x86-2.0-eclair出pub-test版了">Android-x86-2.0-eclair出pub-test版了</a></li><li><a href="http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen" title="Linux下测试键盘鼠标触摸屏触摸板">Linux下测试键盘鼠标触摸屏触摸板</a></li><li><a href="http://wangliping.net/eclair-virtuebox-boot" title="Eclair已经在VirtualBox上跑起来了">Eclair已经在VirtualBox上跑起来了</a></li><li><a href="http://wangliping.net/android-x86-camrecord-and-opensource" title="Android-x86录像功能完善——兼谈开源">Android-x86录像功能完善——兼谈开源</a></li><li><a href="http://wangliping.net/android-x86-begin-to-accept-donate" title="Android-x86项目开始接受捐款">Android-x86项目开始接受捐款</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/source-insight-see-source-code/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Linux下测试键盘鼠标触摸屏触摸板</title>
		<link>http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen</link>
		<comments>http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:29:56 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[android-x86]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[测试]]></category>

		<guid isPermaLink="false">http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen</guid>
		<description><![CDATA[在Linux或者Android-x86系统下，会用到测试键盘、鼠标、触摸屏、触摸板等各种输入设备的功能，那么下面的这段代码是个好的选择。以下文章出自于猫出没的地方，本文做了一些小改动。

　　最近玩了下Android-x86的eclair，主题风格相对之前的1.6好看了很多，而且还加了不少之前没有的功能。但是触摸屏不能用，于是想自己试着去解决这个问题，首先编写了个Linux输入设备的测试小程序来检测问题所在，测试结果发现没有校正，总算也小有成就。接下来应该再dig触摸屏的校正问题：-)

　　现在把写的测试程序放上来供大家参考：
　　代码中宏定义KEY_DEV、MOU_DEV、TOUS_DEV、TOUP_DEV是Linux下键盘，鼠标，触摸屏和触摸板的设备文件路径，对于不同的系统和机器可能有所不同，大家可以用cat /proc/bus/input/devices查看自己机器的设备文件。]]></description>
			<content:encoded><![CDATA[<p>　　在Linux或者Android-x86系统下，会用到测试键盘、鼠标、触摸屏、触摸板等各种输入设备的功能，那么下面的这段代码是个好的选择。以下文章出自于猫出没的地方，本文做了一些小改动。
<p>　　最近玩了下Android-x86的eclair，主题风格相对之前的1.6好看了很多，而且还加了不少之前没有的功能。但是触摸屏不能用，于是想自己试着去解决这个问题，首先编写了个Linux输入设备的测试小程序来检测问题所在，测试结果发现没有校正，总算也小有成就。接下来应该再dig触摸屏的校正问题：-)
<p>　　现在把写的测试程序放上来供大家参考：<br />　　代码中宏定义KEY_DEV、MOU_DEV、TOUS_DEV、TOUP_DEV是Linux下键盘，鼠标，触摸屏和触摸板的设备文件路径，对于不同的系统和机器可能有所不同，大家可以用cat /proc/bus/input/devices查看自己机器的设备文件。</p>
<p><span id="more-555"></span>
<p>　　用gcc -o outfilename filename编译生成可执行文件。如你将代码保存为test.c，那么你可以用gcc -o test test.c来编译连接。然后在目录下使用./test运行文件，注意修改生成的可执行文件权限(sudo chmod a+x test)，不想修改权限的用sudo ./test。目前还没加入测试过程中切换测试设备的功能，只能用CTRL+Z结束程序，再重新执行文件。有时间可以再摸索下加个这个功能，呵呵~~
<div style="border-bottom: #a9a9a9 1px solid; border-left: #a9a9a9 1px solid; background-color: rgb(249,247,237); font-family: consolas, 'Lucida Console', 'Courier New'; color: rgb(0,0,0); border-top: #a9a9a9 1px solid; border-right: #a9a9a9 1px solid" class="source"><span style="color: rgb(0,136,0)">#include &lt;stdio.h&gt;</span><br /><span style="color: rgb(0,136,0)">#include &lt;unistd.h&gt;</span><br /><span style="color: rgb(0,136,0)">#include &lt;sys/types.h&gt;</span><br /><span style="color: rgb(0,136,0)">#include &lt;fcntl.h&gt;</span><br /><span style="color: rgb(0,136,0)">#include &lt;linux/input.h&gt;</span><br /><span style="color: rgb(0,136,0)">#define KEY_DEV "/dev/input/event5"</span><br /><span style="color: rgb(0,136,0)">#define MOU_DEV "/dev/input/event6″</span><br /><span style="color: rgb(0,136,0)">#define TOUS_DEV "/dev/input/event7″</span><br /><span style="color: rgb(0,136,0)">#define TOUP_DEV "/dev/input/event11″</span></p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,0,0)">ts_fd</span> <span style="color: rgb(102,102,102)">=</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br /><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(170,34,255); font-weight: bold">struct</span> <span style="color: rgb(0,0,0)">input_event</span> <span style="color: rgb(0,0,0)">data</span>;</p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">init_device</span>(<span style="color: rgb(0,187,0); font-weight: bold">char</span> <span style="color: rgb(102,102,102)">*</span><span style="color: rgb(0,0,0)">TS_DEV</span>)<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span>((<span style="color: rgb(0,0,0)">ts_fd</span> <span style="color: rgb(102,102,102)">=</span> <span style="color: rgb(0,0,0)">open</span>(<span style="color: rgb(0,0,0)">TS_DEV</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">O_RDONLY</span>)) <span style="color: rgb(102,102,102)">&lt;</span> <span style="color: rgb(102,102,102)">0</span>)<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"Error open %s</span><span style="color: rgb(187,102,34); font-weight: bold">\n\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">TS_DEV</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(0,0,0)">ts_fd</span>;<br /><span style="color: rgb(0,0,0)">}</span></p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">test_key</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">init_device</span>(<span style="color: rgb(0,0,0)">KEY_DEV</span>) <span style="color: rgb(102,102,102)">&lt;</span> <span style="color: rgb(102,102,102)">0</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">while</span>(<span style="color: rgb(102,102,102)">1</span>)<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">read</span>(<span style="color: rgb(0,0,0)">ts_fd</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(102,102,102)">&amp;</span><span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(170,34,255); font-weight: bold">sizeof</span>(<span style="color: rgb(0,0,0)">data</span>));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span> (<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_KEY</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type: EV_KEY, event = %d, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">test_mouse</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">init_device</span>(<span style="color: rgb(0,0,0)">MOU_DEV</span>) <span style="color: rgb(102,102,102)">&lt;</span> <span style="color: rgb(102,102,102)">0</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">while</span>(<span style="color: rgb(102,102,102)">1</span>)<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">read</span>(<span style="color: rgb(0,0,0)">ts_fd</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(102,102,102)">&amp;</span><span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(170,34,255); font-weight: bold">sizeof</span>(<span style="color: rgb(0,0,0)">data</span>));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span> (<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_KEY</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type = EV_KEY, code = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_LEFT</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_LEFT"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_RIGHT</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_RIGHT"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_MIDDLE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_MIDDLE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_SIDE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_SIDE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(187,68,68)">"Unkonw"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">else</span> <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_REL</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type = EV_ABS, code = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">REL_X</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_X"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">REL_Y</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_Y"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_WHEEL</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_WHEEL"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_PRESSURE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_PRESSURE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(187,68,68)">"Unkown"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">test_touch_screen</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">init_device</span>(<span style="color: rgb(0,0,0)">TOUS_DEV</span>) <span style="color: rgb(102,102,102)">&lt;</span> <span style="color: rgb(102,102,102)">0</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">while</span>(<span style="color: rgb(102,102,102)">1</span>)<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">read</span>(<span style="color: rgb(0,0,0)">ts_fd</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(102,102,102)">&amp;</span><span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(170,34,255); font-weight: bold">sizeof</span>(<span style="color: rgb(0,0,0)">data</span>));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span> (<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_KEY</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type: EV_KEY, event = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_TOUCH</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"BTN_TOUCH"</span> <span style="color: rgb(102,102,102)">:</span> <span style="color: rgb(187,68,68)">"Unkown"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">else</span> <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_ABS</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type: EV_ABS, event = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_X</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_X"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_Y</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_Y"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_PRESSURE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_PRESSURE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(187,68,68)">"Unkown"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></p>
<p><span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">test_touch_pancel</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">init_device</span>(<span style="color: rgb(0,0,0)">TOUP_DEV</span>) <span style="color: rgb(102,102,102)">&lt;</span> <span style="color: rgb(102,102,102)">0</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">-</span><span style="color: rgb(102,102,102)">1</span>;<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">while</span>(<span style="color: rgb(102,102,102)">1</span>)<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">read</span>(<span style="color: rgb(0,0,0)">ts_fd</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(102,102,102)">&amp;</span><span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(170,34,255); font-weight: bold">sizeof</span>(<span style="color: rgb(0,0,0)">data</span>));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">if</span> (<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_KEY</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type = EV_KEY, code = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_LEFT</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_LEFT"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_RIGHT</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_RIGHT"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_MIDDLE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_MIDDLE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">BTN_SIDE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_SIDE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(187,68,68)">"Unkonw"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">else</span> <span style="color: rgb(170,34,255); font-weight: bold">if</span>(<span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">type</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">EV_REL</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"&nbsp; type = EV_ABS, code = %s, value = %d</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">"</span><span style="color: rgb(0,0,0)">,</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">REL_X</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_X"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">REL_Y</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_Y"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_WHEEL</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"MOUSE_WHEEL"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">code</span> <span style="color: rgb(102,102,102)">==</span> <span style="color: rgb(0,0,0)">ABS_PRESSURE</span> <span style="color: rgb(102,102,102)">?</span> <span style="color: rgb(187,68,68)">"ABS_PRESSURE"</span> <span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(187,68,68)">"Unkown"</span><span style="color: rgb(0,0,0)">,</span> <span style="color: rgb(0,0,0)">data</span><span style="color: rgb(0,0,0)">.</span><span style="color: rgb(0,0,0)">value</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></p>
<p><span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,160,0)">main</span>()<br /><span style="color: rgb(0,0,0)">{</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">static</span> <span style="color: rgb(0,187,0); font-weight: bold">int</span> <span style="color: rgb(0,0,0)">i</span>;<br /><span style="color: rgb(160,160,0)">select:</span>&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"Please select device:</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">0.KeyBoard</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">1.Mouse</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">2.TouchScreen</span><span style="color: rgb(187,102,34); font-weight: bold">\n</span><span style="color: rgb(187,68,68)">3.TouchPanel</span><span style="color: rgb(187,102,34); font-weight: bold">\n\Your choice is:</span><span style="color: rgb(187,68,68)">"</span>);<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">scanf</span>(<span style="color: rgb(187,68,68)">"%d"</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(102,102,102)">&amp;</span><span style="color: rgb(0,0,0)">i</span>);<br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">switch</span>(<span style="color: rgb(0,0,0)">i</span><span style="color: rgb(0,0,0)">){</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">case</span> <span style="color: rgb(102,102,102)">0</span><span style="color: rgb(0,0,0)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">test_key</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">case</span> <span style="color: rgb(102,102,102)">1</span><span style="color: rgb(0,0,0)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">test_mouse</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">case</span> <span style="color: rgb(102,102,102)">2</span><span style="color: rgb(0,0,0)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">test_touch_screen</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">case</span> <span style="color: rgb(102,102,102)">3</span><span style="color: rgb(0,0,0)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">test_touch_pancel</span>();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">default</span><span style="color: rgb(102,102,102)">:</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">printf</span>(<span style="color: rgb(187,68,68)">"Wrong device, Please select again!</span><span style="color: rgb(187,102,34); font-weight: bold">\n\n</span><span style="color: rgb(187,68,68)">"</span>);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">break</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,0)">}</span><br />&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">goto</span> <span style="color: rgb(0,0,0)">select</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(170,34,255); font-weight: bold">return</span> <span style="color: rgb(102,102,102)">0</span>;<br /><span style="color: rgb(0,0,0)">}</span></div>
<p>原文出处：<a href="http://zhougaofeng.ixiezi.com/2009/12/23/inputtest/">http://zhougaofeng.ixiezi.com/2009/12/23/inputtest/</a></p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/source-insight-see-source-code" title="Source-Insight-看大规模大工程源代码">Source-Insight-看大规模大工程源代码</a></li><li><a href="http://wangliping.net/how-to-use-fdisk-in-linux" title="实例解说 fdisk 使用方法">实例解说 fdisk 使用方法</a></li><li><a href="http://wangliping.net/android-x86-donut-r2" title="Android-x86 1.6-r2 釋出">Android-x86 1.6-r2 釋出</a></li><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li><li><a href="http://wangliping.net/android-x86-20-eclair-release" title="Android-x86-2.0-eclair出pub-test版了">Android-x86-2.0-eclair出pub-test版了</a></li><li><a href="http://wangliping.net/eclair-virtuebox-boot" title="Eclair已经在VirtualBox上跑起来了">Eclair已经在VirtualBox上跑起来了</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>C++单链表冒泡排序、运算符重载和文件读写</title>
		<link>http://wangliping.net/cpp-link-sort-override-wrfile</link>
		<comments>http://wangliping.net/cpp-link-sort-override-wrfile#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:21:41 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[冒泡法]]></category>
		<category><![CDATA[文件读写]]></category>
		<category><![CDATA[重载运算符]]></category>
		<category><![CDATA[链表]]></category>

		<guid isPermaLink="false">http://wangliping.net/?p=530</guid>
		<description><![CDATA[　　以前写C++程序都是用VC写，严格意义上讲，估计那也不算在写C++，因为都是用着MFC。这两天同学让帮忙写一个布置的作业，一看，显然不需要MFC的（确切地说，不能用MFC），于是先装了个VS2010，后来觉得不需要，装了个Dev　C++，于是再次开始写C++程序的征程。

　　脱离了VC写C++程序，才发现自己一无是处，居然连个最简单的类都不会添加了。这都是以前VC惯的，想以前用VC时，添加类添加函数添加响应函数都是多么地方便多么地简单。等到这一切都需要自己亲手操作时，才知道原来认为不值一提的东西，也是如此艰难。还好，经过看例程和回忆，终于在撰写方面越过去了。

　　这篇文章主要记录一下写这个程序当中用到的单链表冒泡排序、运算符重载和文件读写。]]></description>
			<content:encoded><![CDATA[<p>以前写C++程序都是用VC写，严格意义上讲，估计那也不算在写C++，因为都是用着MFC。这两天同学让帮忙写一个布置的作业，一看，显然不需要MFC的（确切地说，不能用MFC），于是先装了个VS2010，后来觉得不需要，装了个Dev　C++，于是再次开始写C++程序的征程。</p>
<p>脱离了VC写C++程序，才发现自己一无是处，居然连个最简单的类都不会添加了。这都是以前VC惯的，想以前用VC时，添加类添加函数添加响应函数都是多么地方便多么地简单。等到这一切都需要自己亲手操作时，才知道原来认为不值一提的东西，也是如此艰难。还好，经过看例程和回忆，终于在撰写方面越过去了。</p>
<p>这篇文章主要记录一下写这个程序当中用到的单链表冒泡排序、运算符重载和文件读写。</p>
<p><span id="more-530"></span> <strong> 冒泡法排序</strong>相信学过C或者C++的人都不会陌生，简直就是必备单元。不过以前课本学的都是数组的排序，以为将其运用到链表上也是熟练自如，结果依葫芦画瓢时，才发现不是那么简单。节点地址的交换和移动还真不是轻易搞定的事情（当然对于大虾来说，这可能轻而易举）。在一分钟内写完冒泡排序，在10秒后运行发现错了，然后就一直纠缠于此。Google搜索相关方法也无效，网上介绍了一个又一个（其实好多都重复）的单链表冒泡排序，拿来用时没有一个行得通，真不知道是我的问题还是那些方法的问题，最后睡觉时终于明白链表的移动要考虑前节点和后节点，而我，只考虑了后节点。也罢，今早起床后，换了一种思路，大不了咱就不交换节点了，交换数据不就完了。按这个思路，立马生效。</p>
<blockquote><p>for (cur = head; cur-&gt;next != NULL; cur = cur-&gt;next) {<br />
for (cop = cur-&gt;next; cop != NULL; cop = cop-&gt;next) {<br />
if (cur-&gt;salary &lt; cop-&gt;salary) {<br />
swap_data(cur, cop);<br />
}<br />
}<br />
}</p></blockquote>
<blockquote><p>void swap_data(employee* a, employee* b)<br />
{<br />
string id = a-&gt;id;<br />
a-&gt;id = b-&gt;id;<br />
b-&gt;id = id;<br />
}</p></blockquote>
<p>虽然方法笨点，不过效果上还不错，可能在内存消耗和计算时间上有所损耗，下一步研究看看到底单链表如何利用地址交换的方法进行冒泡排序，脑海中已经有些思路了，有时间就试试。正好可以给这个程序做优化。呵呵～</p>
<p>关于<strong>运算符重载</strong>，我以前只是知道C++里有这个东西，并且还是相当先进的一个东西（相比较C而言），当然看书时只是为其叫好，自己倒是一次都没有实际操作过。等到今天要用到时，才发现看过的知识如果不实践，还真是跟没看过没太大的区别，只有概念，完全没法操作。不过Google是个好东西，看了下相关知识，于是开始动手敲&gt;&gt;的运算符重载函数。</p>
<p>由于文件的输入是不可以有空格的，所以对&gt;&gt;重载，使其可以识别空格，如在输入名字的时候，可能就需要有空格，或者其它误操作。操作符重载其实跟写函数一样，只不过它是一个相对比较特殊的函数，有固定的函数命名方式。运算符重载函数可以是全局的，也可以是类的成员函数，以下作为全局函数如此写。这样看来，写运算符重载函数主要是要明白你要做什么，然后依格式明明，再按照普通函数一样去写就好了。</p>
<blockquote><p>employee* operator &gt;&gt; (fstream&amp; file, employee* temp)<br />
{<br />
string id;<br />
char blank;<br />
file&gt;&gt;id;</p>
<p>if (id.length() == 0) {<br />
return NULL;<br />
}</p>
<p>blank = file.get();<br />
while (blank == ' ') {<br />
file&gt;&gt;more;<br />
id = id + blank + more;<br />
blank = file.get();<br />
}</p>
<p>temp-&gt;id = id;<br />
return temp;<br />
}</p></blockquote>
<p>最后一点就是文件的读写了。这个也是以前只是看书，却没有实践的内容，毕竟MFC将其封装得太好了，文件读写直接调用那些类就好了。当然在标准C++里也是调用类了，其实用过之后，觉得也是挺好用的，不过想用深入就是另外一回事了。以下抛砖引玉，当然没对是否存在文件，是否能够写入做判断。</p>
<blockquote><p>ofstream outfile("backup.txt"); //相当于fstream outfile; outfile.open("backup.txt",ios::out);<br />
outfile&lt;&lt;id&lt;&lt;"\t";<br />
outfile&lt;&lt;name&lt;&lt;"\t";<br />
outfile.close();</p></blockquote>
<blockquote><p>fstream f("backup.txt", ios::in);<br />
f&gt;&gt;empl;<br />
f.close();</p></blockquote>
<p>这里对两点做说明，一个就是fstream,ofstream,ifstream，它们用法可以如上，注意看看注释后面的那句，呵呵～还有一点就是"&lt;&lt;""&gt;&gt;"都是以空格类（space/tab/enter）给分隔符，因此你可以f&gt;&gt;a&gt;&gt;b&gt;&gt;c来不停输入。其实理解fstream就跟理解cin和cout一样，只是一个是输入输出到文件，一个是输入输出到屏幕，这样就可以好好理解了。</p>
<p>突然发现，上面所阐述的都好浅显啊。表笑，就算是记录一个过程吧。</p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/c-file-find-out" title="C语言实现文件查找操作">C语言实现文件查找操作</a></li><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/cpp-link-sort-override-wrfile/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux内存信息查看相关</title>
		<link>http://wangliping.net/linux_mem_info_watch</link>
		<comments>http://wangliping.net/linux_mem_info_watch#comments</comments>
		<pubDate>Wed, 25 Nov 2009 08:13:52 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[buffer]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[内存]]></category>

		<guid isPermaLink="false">http://wangliping.net/linux_mem_info_watch</guid>
		<description><![CDATA[free 命令相对于top 提供了更简洁的查看系统内存使用情况： 

　　$ free
　　　total used free shared buffers cachedMem: 

　　　255268 238332 16936 0 85540 126384
　　　-/+ buffers/cache: 26408 228860Swap: 265000 0 265000]]></description>
			<content:encoded><![CDATA[<p>free 命令相对于top 提供了更简洁的查看系统内存使用情况：
<p>　　$ free<br />　　　total used free shared buffers cachedMem:
<p>　　　255268 238332 16936 0 85540 126384<br />　　　-/+ buffers/cache: 26408 228860Swap: 265000 0 265000
<p>　　Mem：表示物理内存统计</p>
<p>　　-/+ buffers/cached：表示物理内存的缓存统计</p>
<p><span id="more-516"></span>
<p>　　Swap：表示硬盘上交换分区的使用情况，这里我们不去关心。 </p>
<p>　　系统的总物理内存：255268Kb（256M），但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb，它仅代表未被分配的内存。
<p>　　我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值，1、2 分别代表第一行和第二行的数据。
<p>　　total1：表示物理内存总量。
<p>　　used1：表示总计分配给缓存（包含buffers 与cache ）使用的数量，但其中可能部分缓存并未实际使用。
<p>　　free1：未被分配的内存。
<p>　　shared1：共享内存，一般系统不会用到，这里也不讨论。
<p>　　buffers1：系统分配但未被使用的buffers 数量。
<p>　　cached1：系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
<p>　　used2：实际使用的buffers 与cache 总量，也是实际使用的内存总量。
<p>　　free2：未被使用的buffers 与cache 和未被分配的内存之和，这就是系统当前实际可用内存。
<p>　　可以整理出如下等式：<br />　　total1 = used1 + free1total1 = used2 + free2used1 = buffers1 + cached1 + used2free2 = buffers1 + cached1 + free1
<p>　　<strong>buffer 与cache 的区别</strong></p>
<blockquote><p>　　A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use. </p>
</blockquote>
<p>　　更详细的解释参考：Difference Between Buffer and Cache
<p>　　对于共享内存（Shared memory），主要用于在UNIX 环境下不同进程之间共享数据，是进程间通信的一种方法，一般的应用程序不会申请使用共享内存，笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣， 请参考：What is Shared Memory?
<p>　　<strong>Cache</strong>：高速缓存，是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存，CPU直接从内存中存取数据要等待一 定时间周期，Cache中保存着CPU刚用过或循环使用的一部分数据，当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待 时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache)，L1 Cache集成在CPU内部，L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部，常见的容量有256KB或512KB L2 Cache。 </p>
<p>　　<strong>Buffer</strong>：缓冲区，一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区，可以使进程之间的相互等待变少，从而使从速度慢的设备读入数据时，速度快的设备的操作进程不发生间断。
<p>　　Free中的buffer和cache：（它们都是占用内存）：
<p>　　buffer : 作为buffer cache的内存，是块设备的读写缓冲区
<p>　　cache: 作为page cache的内存, 文件系统的cache
<p>　　参考：<a title="http://zhougaofeng.ixiezi.com/2009/11/25/linux%e4%b8%ad%e5%86%85%e5%ad%98%e4%bf%a1%e6%81%af/" href="http://zhougaofeng.ixiezi.com/2009/11/25/linux%e4%b8%ad%e5%86%85%e5%ad%98%e4%bf%a1%e6%81%af/">http://zhougaofeng.ixiezi.com/2009/11/25/linux%e4%b8%ad%e5%86%85%e5%ad%98%e4%bf%a1%e6%81%af/</a></p>
<h3  class="related_post_title">你可能也感兴趣的文章：</h3><ul class="related_post"><li><a href="http://wangliping.net/how_to_add_swap_method" title="Linux中增加Swap的方法">Linux中增加Swap的方法</a></li><li><a href="http://wangliping.net/how-to-use-fdisk-in-linux" title="实例解说 fdisk 使用方法">实例解说 fdisk 使用方法</a></li><li><a href="http://wangliping.net/c-change-file-permission" title="C语言查看和更改文件的权限">C语言查看和更改文件的权限</a></li><li><a href="http://wangliping.net/source-insight-see-source-code" title="Source-Insight-看大规模大工程源代码">Source-Insight-看大规模大工程源代码</a></li><li><a href="http://wangliping.net/linux-android-x86-test-keyboard-mouse-touch-screen" title="Linux下测试键盘鼠标触摸屏触摸板">Linux下测试键盘鼠标触摸屏触摸板</a></li><li><a href="http://wangliping.net/make_linux_kernel_update" title="编译Linux内核教程（Ubuntu为例）">编译Linux内核教程（Ubuntu为例）</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/linux_mem_info_watch/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>笔记本破音解决方案(Y450)</title>
		<link>http://wangliping.net/to-solve-the-volume-problem-y450</link>
		<comments>http://wangliping.net/to-solve-the-volume-problem-y450#comments</comments>
		<pubDate>Fri, 20 Nov 2009 12:31:05 +0000</pubDate>
		<dc:creator>转烛</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[Ideapad]]></category>
		<category><![CDATA[Y450]]></category>
		<category><![CDATA[方案]]></category>
		<category><![CDATA[破音]]></category>
		<category><![CDATA[笔记本]]></category>
		<category><![CDATA[联想]]></category>
		<category><![CDATA[解决]]></category>

		<guid isPermaLink="false">http://wangliping.net/%e7%ac%94%e8%ae%b0%e6%9c%ac%e7%a0%b4%e9%9f%b3%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88y450</guid>
		<description><![CDATA[用着Y450TSI，传说中性价比极高的笔记本，哪知不只屏幕不行，喇叭也破音。以为是驱动的问题，但是检查了一下，驱动都装上了啊。以为是开了杜比音效的缘故，关了发现也破音。以为是声音开大了，于是把声音调小，依然破音。破音越来越影响听音乐，于是不得不Google了，才发现上述方法的确是解决不了破音问题的。不过原来用Vista时貌似是没有破音的，用了WIN7出现的。下面就讲两个方法。

　　第一个方法非常容易，那就是在电源管理里，将性能设成高性能，不要设平衡了，这样就可以解决破音问题，很简单，很方便，现在我也采用的是这个方法，毕竟够简单。呵呵～就是浪费电了。

　　第二个方法就是IT168上搜过来的方法，有点专业，但是认真看了，不去搞原理的话，依葫芦画瓢就好。当然这个方法也有局限性，跟播放器关联了。废话不说，直接贴过来大家看。]]></description>
			<content:encoded><![CDATA[<p>　　用着Y450TSI，传说中性价比极高的笔记本，哪知不只屏幕不行，喇叭也破音。以为是驱动的问题，但是检查了一下，驱动都装上了啊。以为是开了杜比音效的缘故，关了发现也破音。以为是声音开大了，于是把声音调小，依然破音。破音越来越影响听音乐，于是不得不Google了，才发现上述方法的确是解决不了破音问题的。不过原来用Vista时貌似是没有破音的，用了WIN7出现的。下面就讲两个方法。</p>
<p>　　第一个方法非常容易，那就是在电源管理里，将性能设成高性能，不要设平衡了，这样就可以解决破音问题，很简单，很方便，现在我也采用的是这个方法，毕竟够简单。呵呵～就是浪费电了。</p>
<p>　　第二个方法就是IT168上搜过来的方法，有点专业，但是认真看了，不去搞原理的话，依葫芦画瓢就好。当然这个方法也有局限性，跟播放器关联了。废话不说，直接贴过来大家看。</p>
<p><span id="more-488"></span><br />
<blockquote>
<p>对于笔记本的集成声卡只有走<i>WASAPI</i>(exclusive mode) 这一路才能真正避免破音，<br />一般的声音走的share mode由于优先级不高，多路声音复用造成干扰容易造成破音（在低端集成声卡中尤为明显）<br />现在的问题就是怎么样才能让声音走<i>WASAPI</i>(exclusive mode)这一条通路呢？由于只用一路声音可以走这条路，对大家而言也就是要让音乐播放器和视频播放器这两样没有破音就足够了。<br />音乐很简单，foorbar+WASAPI插件（类似于XP下的KS插件）。<br />视频复杂了点，常用播放器中没有可以支持<i>WASAPI</i>(exclusive mode)的。<br />这里我用到了<strong>ReClock，</strong>目前的版本是1.8.4.5，这个软件有很多功能，我们只用他的audio renderer，<br />设置如图<br />&nbsp;<img border="0" alt="" src="http://ideapad.it168.com/attachment.php?aid=63594&amp;noupdate=yes"></p>
<p>&nbsp;<img border="0" alt="" src="http://ideapad.it168.com/attachment.php?aid=63595&amp;noupdate=yes">
<p>&nbsp;<img border="0" alt="" src="http://ideapad.it168.com/attachment.php?aid=63596&amp;noupdate=yes">
<p>在播放软件下选择reclock audio renderer，以mpc-hc为例<br />&nbsp;<img border="0" alt="" src="http://ideapad.it168.com/attachment.php?aid=63597&amp;noupdate=yes">
<p>播放视频，任务栏出现reclock图标，双击进行设置<br />&nbsp;<img border="0" alt="" src="http://ideapad.it168.com/attachment.php?aid=63598&amp;noupdate=yes">
<p>这样你的视频播放软件也用上了<i>WASAPI</i>(exclusive mode)，爆音问题彻底解决。音质也高了不少哦。<br />软件下载地址
<p><a href="http://www.free-codecs.com/download/ReClock_DirectShow_Filter.htm">http://www.free-codecs.com/download/ReClock_DirectShow_Filter.htm</a>
<p>原文地址：<a title="http://ideapad.it168.com/viewthread.php?tid=577908&amp;extra=&amp;page=1" href="http://ideapad.it168.com/viewthread.php?tid=577908&amp;extra=&amp;page=1">http://ideapad.it168.com/viewthread.php?tid=577908&amp;extra=&amp;page=1</a></p>
</blockquote>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://wangliping.net/qqmail_domain" title="转载：QQMail 个性域名邮箱服务开始公测">转载：QQMail 个性域名邮箱服务开始公测</a></li><li><a href="http://wangliping.net/movie-critic-hours" title="【影评 时时刻刻】one day,one life">【影评 时时刻刻】one day,one life</a></li><li><a href="http://wangliping.net/3" title="【容融文学】连载（三）">【容融文学】连载（三）</a></li><li><a href="http://wangliping.net/vi" title="vi 命令 用法">vi 命令 用法</a></li><li><a href="http://wangliping.net/robot_develop" title="机器人的发展">机器人的发展</a></li><li><a href="http://wangliping.net/my_18_years_is_not_for_your_coffee_together" title="我奋斗了18年，不是为了和你一起喝咖啡（转）">我奋斗了18年，不是为了和你一起喝咖啡（转）</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://wangliping.net/to-solve-the-volume-problem-y450/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
