<?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></description>
	<lastBuildDate>Thu, 26 Jan 2012 08:59:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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, 就是快速的得出执行结果。 [...]]]></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, [...]]]></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() 系统调用来被动地监控监视器和许多其他输入源。两种方法 [...]]]></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 使文件系统监控变得多么容易。 [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/870.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux c/c++ GDB教程详解</title>
		<link>http://www.linuxany.com/archives/794.html</link>
		<comments>http://www.linuxany.com/archives/794.html#comments</comments>
		<pubDate>Sat, 15 Aug 2009 11:44:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[gdb]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=794</guid>
		<description><![CDATA[GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许，各位比较喜欢那种图形界面方式的，像VC、BCB等IDE的调试，但如果你是在UNIX平台下做软件，你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长，尺有所短”就是这个道理。 一般来说，GDB主要帮忙你完成下面四个方面的功能： 1、启动你的程序，可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。（断点可以是条件表达式） 3、当程序被停住时，可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来，GDB和一般的调试工具没有什么两样，基本上也是完成这些功能，不过在细节上，你会发现GDB这个调试工具的强大，大家可能比较习惯了图形化的调试工具，但有时候，命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。 一个调试示例 —————— 源程序：tst.c 1 #include 2 3 int func(int n) 4 { 5 int sum=0,i; 6 for(i=0; i gdb tst]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/794.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C/C++语言编程修养</title>
		<link>http://www.linuxany.com/archives/791.html</link>
		<comments>http://www.linuxany.com/archives/791.html#comments</comments>
		<pubDate>Sat, 15 Aug 2009 11:38:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=791</guid>
		<description><![CDATA[什么是好的程序员？是不是懂得很多技术细节？还是懂底层编程？还是编程速度比较快？ 我觉得都不是,对于一些技术细节来说和底层的技术，只要看帮助，查资料就能找到，对于速度快，只要编得多也就熟能生巧了。 好的程序员应该有以下几方面的素质： 1、有专研精神，勤学善问、举一反三。 &#160; 2、积极向上的态度，有创造性思维。 &#160; 3、与人积极交流沟通的能力，有团队精神。 &#160; 4、谦虚谨慎，戒骄戒燥。 &#160; 5、写出的代码质量高。包括：代码的稳定、易读、规范、易维护、专业。 这些都是程序员的修养，这里我想谈谈“编程修养”，也就是上述中的第5点。我觉得，如 果我要了解一个作者，我会看他所写的小说，如果我要了解一个画家，我会看他所画的图 画，如果我要了解一个工人，我会看他所做出来的产品，同样，如果我要了解一个程序员 ，我想首先我最想看的就是他的程序代码，程序代码可以看出一个程序员的素质和修养， 程序就像一个作品，有素质有修养的程序员的作品必然是一图精美的图画，一首美妙的歌 曲，一本赏心悦目的小说。 我看过许多程序，没有注释，没有缩进，胡乱命名的变量名，等等，等等，我把这种人统 称为没有修养的程序，这种程序员，是在做创造性的工作吗？不，完全就是在搞破坏，他 们与其说是在编程，还不如说是在对源程序进行“加密”，这种程序员，见一个就应该开 除一个，因为他编的程序所创造的价值，远远小于需要在上面进行维护的价值。 程序员应该有程序员的修养，那怕再累，再没时间，也要对自己的程序负责。我宁可要那 种动作慢，技术一般，但有良好的写程序风格的程序员，也不要那种技术强、动作快的“搞破坏”的程序员。有句话叫“字如其人”，我想从程序上也能看出一个程序员的优劣。 因为，程序是程序员的作品，作品的好坏直截关系到程序员的声誉和素质。而“修养”好 的程序员一定能做出好的程序和软件。 有个成语叫“独具匠心”，意思是做什么都要做得很专业，很用心，如果你要做一个“匠 ”，也就是造诣高深的人，那么，从一件很简单的作品上就能看出你有没有“匠”的特性 ，我觉得做一个程序员不难，但要做一个“程序匠”就不简单了。编程序很简单，但编出 有质量的程序就难了。 我在这里不讨论过深的技术，我只想在一些容易让人忽略的东西上说一说，虽然这些东西 可能很细微，但如果你不注意这些细微之处的话，那么他将会极大的影响你的整个软件质 量，以及整个软件程的实施，所谓“千里之堤，毁于蚁穴”。 “细微之处见真功”，真正能体现一个程序的功底恰恰在这些细微之处。 这就是程序员的——编程修养。我总结了在用C/C++语言（主要是C语言）进行程序写作上 的三十二个“修养”，通过这些，你可以写出质量高的程序，同时也会让看你程序的人渍 渍称道，那些看过你程序的人一定会说：“这个人的编程修养不错”。 ———————————————————————— 01、版权和版本 02、缩进、空格、换行、空行、对齐 03、程序注释 04、函数的[in][out]参数 05、对系统调用的返回进行判断 06、if 语句对出错的处理 07、头文件中的#ifndef 08、在堆上分配内存 09、变量的初始化 10、h和c文件的使用 11、出错信息的处理 12、常用函数和循环语句中的被计算量 13、函数名和变量名的命名 14、函数的传值和传指针 15、修改别人程序的修养 16、把相同或近乎相同的代码形成函数和宏 [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/791.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

