<?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>ubuntu,debian,redhat -linuxany.com &#187; c</title>
	<atom:link href="http://www.linuxany.com/archives/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linuxany.com</link>
	<description>ubuntu,debian,redhat,fedora,centos</description>
	<lastBuildDate>Thu, 29 Jul 2010 13:01:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在vim/vi中快速执行php或c/c++的方法</title>
		<link>http://www.linuxany.com/archives/1277.html</link>
		<comments>http://www.linuxany.com/archives/1277.html#comments</comments>
		<pubDate>Wed, 26 May 2010 11:57:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[vimrc]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=1277</guid>
		<description><![CDATA[如果使用VIM来编写代码，可能很多朋友就会想了，有没有什么方法来建立一个快捷键，能快速的运行我们所编写的代码呢？！！答案当然是肯定了的，不然也不会写这篇日志来讨论这个问题了。
在介绍方法之前，先来谈一下自己以前的执行方式吧！
先拿PHP来讲吧，最传统的方式就是将编写好的代码放在apache的根目录，然后通过浏览器来运行，或者使用php命令来运行php.可以使用php的r参数
linuxany@~$ php -r &#34;echo 'hqlong';&#34;
来快速测试，或者使用q参数
linuxany@~$ php -q test.php
来运行。

接下来讲怎么将vim支持一键执行。
大致原理是使用键盘映射，将快捷键映射到执行的命令。
在.vimrc中添加
nmap &#60; F5 &#62; &#60; ESC &#62;:!clear &#38;&#38; php -q &#60; C-R &#62;%&#60; cr &#62;
即当我们按下F5时，就相当于执行了如下操作。
1.按下ESC，然后再按下:,进入vim命令行模式
2.执行clear清屏操作。
3.然后运行当前脚本。
4.最后执行回车操作.
下面有几个指令需要解释一下:
< C - R >%:得到当前文件的名字,包括路径.(按ctrl+r,然后再按%)
接下来可以测试一下.
vim /tmp/test.php
&#60; ? php
&#160; &#160; echo&#160;&#34;hqlong&#34;;

?&#62;
保存后,按F5,
就是快速的得出执行结果。
基于c/c++也同样可以做出映射来，比如我们用F6来执行C++代码。
那么就只需在.vimrc中添加
nmap &#60; F6 &#62; &#60; ESC &#62;:!clear &#38;&#38; g++ &#60; C-R &#62;% -o test &#38;&#38; ./test&#60; cr &#62;
这里如果我们测试如下代码。
vim test.cpp
#include &#60; iostream &#62;
using&#160;namespace std;
&#160;
int&#160;main() {
&#160; &#160;&#160; [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/1277.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sprintf()的一些高级用法</title>
		<link>http://www.linuxany.com/archives/886.html</link>
		<comments>http://www.linuxany.com/archives/886.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 01:29:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[sprintf]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=886</guid>
		<description><![CDATA[在将各种类型的数据构造成字符串时，sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样，只是打印的目的地不同而已，前者打印到字符串中，后者则直 接在命令行上输出。这也导致sprintf 比printf 有用得多。
sprintf 是个变参函数，定义如下：
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外，后面可以接任意多个参数。而它的精华，显然就在第二个参数：
格式化字符串上。
printf 和sprintf 都使用格式化字符串来指定串的格式，在格式串内部使用一些以“%”开头的格式说明符（format specifications）来占据一个位置，在后边的变参列表中提供相应的变量，最终函数就会用相应位置的变量来替代那个说明符，产生一个调用者想要的字符串。

格式化数字字符串
sprintf 最常见的应用之一莫过于把整数打印到字符串中，所以，spritnf 在大多数场合可以替代itoa。
把整数123 打印成一个字符串保存在s 中。
sprintf(s, &#34;%d&#34;, 123); //产生&#34;123&#34;
可以指定宽度，不足的左边补空格：
sprintf(s, &#34;%8d%8d&#34;, 123, 4567); //产生：&#34; 123 4567&#34;
当然也可以左对齐：
sprintf(s, &#34;%-8d%8d&#34;, 123, 4567); //产生：&#34;123 4567&#34;
也可以按照16 进制打印：
sprintf(s, &#34;%8x&#34;, 4567); //小写16 进制，宽度占8 个位置，右对齐
sprintf(s, &#34;%-8X&#34;, 4568); //大写16 进制，宽度占8 个位置，左对齐
这样，一个整数的16 进制字符串就很容易得到，但我们在打印16 进制内容时，通常想要一种左边补0 的等宽格式，那该怎么做呢？很简单，在表示宽度的数字前面加个0 就可以了。
sprintf(s, &#34;%08X&#34;, [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/886.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C中的文件操作</title>
		<link>http://www.linuxany.com/archives/882.html</link>
		<comments>http://www.linuxany.com/archives/882.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 01:11:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[fclose]]></category>
		<category><![CDATA[fopen]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=882</guid>
		<description><![CDATA[文件使用方式 　　　　　　　意 义
“rt”　　　　　　只读打开一个文本文件，只允许读数据
“wt”　　　　　　只写打开或建立一个文本文件，只允许写数据
“at”　　　　　　追加打开一个文本文件，并在文件末尾写数据
“rb”　　　　　　只读打开一个二进制文件，只允许读数据
“wb”　　　　 　 只写打开或建立一个二进制文件，只允许写数据
“ab” 　　　　 　追加打开一个二进制文件，并在文件末尾写数据
“rt+”　　　　　 读写打开一个文本文件，允许读和写
“wt+”　　　　　 读写打开或建立一个文本文件，允许读写
“at+”　　　　　 读写打开一个文本文件，允许读，或在文件末追加数 据
“rb+”　　　　　 读写打开一个二进制文件，允许读和写
“wb+”　　　　　 读写打开或建立一个二进制文件，允许读和写
“ab+” 　　　　　读写打开一个二进制文件，允许读，或在文件末追加数据

在C语言中提供了多种文件读写的函数： 
·字符读写函数 ：fgetc和fputc
·字符串读写函数：fgets和fputs
·数据块读写函数：freed和fwrite
·格式化读写函数：fscanf和fprinf
起始点 　　　表示符号 　　　数字表示
──────────────────────────
文件首 　　　SEEK—SET　　　　0
当前位置 　　SEEK—CUR　　　　1
文件末尾 　　SEEK—END 　　　 2
您还可能感兴趣的内容在vim/vi中快速执行php或c/c++的方法fopen和open的具体区别sprintf()的一些高级用法  使用 inotify 监控文件系统的活动使用 inotify 监控 Linux 文件系统事件]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/882.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 inotify 监控文件系统的活动</title>
		<link>http://www.linuxany.com/archives/875.html</link>
		<comments>http://www.linuxany.com/archives/875.html#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:36:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[inotify]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=875</guid>
		<description><![CDATA[Inotify 是一个 Linux® 特性，它监控文件系统操作，比如读取、写入和创建。Inotify 反应灵敏，用法非常简单，并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中，并发现一组可用来进一步自动化系统管理的命令行工具。
系统管理就像日常生活一样。就像刷牙和吃蔬菜一样，日常的维护能保持机器的良好状态。您必须定期清空废物，比如临时文件或无用的日志文件，以及花时间填写表单、回复电话、下载更新和监控进程等。幸好自动化 shell 脚本、使用 Nagios 等工具进行监控、通过常见的 cron 进行任务调度可以减轻这个负担。 
但奇怪的是，这些工具没有一个具有响应性。当然，您可以安排一个频繁运行的 cron 任务来监控条件，但这样繁忙的轮询 — 消耗大量资源并且具有不确定性 — 并不是很理想。例如，如果您必须监控输入数据的几个 Transfer Protocol（FTP）收存箱，您可能要通过 find 命令扫描每个目标目录，列举新的内容。然而，尽管这个操作看起来并没有什么害处，但每个调用都产生一个新的 shell 和 find 命令，这需要许多系统调用来打开目录，然后扫描目录，等等。这会造成过于频繁的或大量的轮询任务（更糟糕的是，繁忙的轮询并不总是很好。想象一下一个文件系统浏览器，比如 Mac OS X 的 Finder，轮询更新时需要的大量资源及其复杂性）。 
那么，管理员应该怎么办呢？令人高兴的是，您可以再次求助于可以信赖的计算机。

了解 inotify
Inotify 是一个 Linux 内核特性，它监控文件系统，并且及时向专门的应用程序发出相关的事件警告，比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。 
使用 inotify 很简单：创建一个文件描述符，附加一个或多个监视器（一个监视器 是一个路径和一组事件），然后使用 read() 方法从描述符获取事件信息。read() 并不会用光整个周期，它在事件发生之前是被阻塞的。
更好的是，因为 inotify 通过传统的文件描述符工作，您可以利用传统的 select() 系统调用来被动地监控监视器和许多其他输入源。两种方法 — 阻塞文件描述符和使用 select()— 都避免了繁忙轮询。
现在，让我们深入了解 [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/875.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用 inotify 监控 Linux 文件系统事件</title>
		<link>http://www.linuxany.com/archives/870.html</link>
		<comments>http://www.linuxany.com/archives/870.html#comments</comments>
		<pubDate>Sat, 17 Oct 2009 12:16:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[inotify]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=870</guid>
		<description><![CDATA[Inotify 是文件系统事件监控机制，计划包含在即将发布的 Linux 内核中作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify一种强大的、细粒度的、异步的机制，它满足各种各样的文件监控需要，不仅限于安全和性能。下面让我们一起学习如何安装 inotify 和如何构建一个示例用户空间应用程序来响应文件系统事件。
文件系统事件监控对于从文件管理器到安全工具的各种程序都是必要的，但是 dnotify（早期内核中的标准）存在一些局限性，这使我们期待出现一种更加完善的机制。抱着这种期待，我们发现了 inotify，一种更加现代化的文件系统事件监控替代品。

为什么使用 inotify？
使用 inotify 取代 dnotify 的原因有很多。第一个原因是，dnotify 需要您为每个打算监控是否发生改变的目录打开一个文件描述符。当同时监控多个目录时，这会消耗大量的资源，因为有可能达到每个进程的文件描述符限制。 
除此之外，文件描述符会锁定目录，不允许卸载（unmount）支持的设备，这在存在可移动介质的环境中会引发问题。在使用 inotify 时，如果正在监控被卸载的文件系统上的文件，那么监控会被自动移除并且您会接收到一个卸载事件。
inotify 的优点是它使用文件描述符作为基本接口，使应用程序开发者使用 select 和 poll 来监控设备。这允许有效的多路 I/O 和与 Glib 的 mainloop 的集成。相反，dnotify 所使用的信号常常使程序员头疼并且感觉不太优雅。 
inotify 通过提供一个更优雅的 API 解决了这些问题，该 API 使用最少的文件描述符，并确保更细粒度的监控。与 inotify 的通信是通过设备节点提供的。基于以上原因，对于监控 Linux 2.6 平台上的文件，inotify 是您最明智的选择。 
在简单应用程序中使用 inotify
为演示 inotify 的使用，我将展示如何为文件系统事件构造一个监控任意目录（或单个文件）的示例程序。我将站在一个较高的层次上来展示 inotify 使文件系统监控变得多么容易。 
Main 方法
这个简单的示例向我们展示 inotify 在任意目录上设置监控是多么容易。稍后我们将看到主要的帮助器例程。您可以在本文的 下载 [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/870.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
