RodYang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Linux

摘要:linux提供了daemon函数用于创建守护进程,实现原理如下:#include int daemon(int nochdir, int noclose);1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2.当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3.当noclose为0是,daemon将进城的STDIN, STDOUT, STDERR都重定向到/dev/null。daemon的实现大致如下:int daemon( int nochdir, int noclose ){ pid_t pid; if ( !nochdir &am 阅读全文
posted @ 2013-12-14 19:13 RodYang 阅读(890) 评论(0) 推荐(0)

摘要:【fstatfs/statfs系统调用】 功能描述: 查询文件系统相关的信息。 用法: #include /* 或者 */int statfs(const char *path, struct statfs *buf);int fstatfs(int fd, struct statfs *buf); 参数: path: 位于需要查询信息的文件系统的文件路径名。 fd: 位于需要查询信息的文件系统的文件描述词。buf:以下结构体的指针变量,用于储存文件系统相关的信息struct statfs { long f_type; /* 文件系统类型 */ long f_bsize; /* 经过优化... 阅读全文
posted @ 2013-11-22 02:58 RodYang 阅读(711) 评论(0) 推荐(0)

摘要:libcurl,在HLS流媒体播放终端上提供HTTP下载的相关接口。具体的使用方式可以参见http://curl.haxx.se/libcurl/c/libcurl-tutorial.html,或博客http://www.cppblog.com/tx7do/archive/2012/02/19/166011.html。 代码:[cpp]view plaincopym_pCurl=curl_easy_init();if(m_pCurl==NULL)break;curl_easy_reset(m_pCurl);curl_easy_setopt(m_pCurl,CURLOPT_URL,url.c_s 阅读全文
posted @ 2013-11-01 15:53 RodYang 阅读(2027) 评论(0) 推荐(0)

摘要:系统编程中一个重要的方面就是有效地处理与内存相关的问题。你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。所以,在实践中会用到很多工具来调试内存问题。在本文中,我们将讨论最流行的开源内存管理框架 VALGRIND。摘自 Valgrind.org:Valgrind是用于构建动态分析工具的探测框架。它包括一个工具集,每个工具执行某种类型的调试、分析或类似的任务,以帮助完善你的程序。Valgrind的架构是模块化的,所以可以容易地创建新的工具而又不会扰乱现有的结构。许多有用的工具被作为标准而提供。Memcheck是一个内存错误检测器。它 阅读全文
posted @ 2013-10-27 14:21 RodYang 阅读(471) 评论(0) 推荐(0)

摘要:用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一款工具。Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序,还有一系列的工具,它们完成调试,剖析和一些类似的任务。valgrind是高度模块化的,所以开发人员或者用户可以给它添加新的工具而不会损坏己有的结构。valgrind的官方网址是:http://valgrin 阅读全文
posted @ 2013-10-26 21:24 RodYang 阅读(435) 评论(0) 推荐(0)

摘要:在linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在linux下编写程序的一个大问题。 是不是说没有一种内存检查工具能够在linux使用呢,也不是,像valgrind工具还是相当不错的。他的下载地址是http://valgrind.org/downloads/current.html#current下载一个valgrind 3.2.3 (tar.bz2) 工具,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等。这是一个没有. 阅读全文
posted @ 2013-10-26 20:52 RodYang 阅读(647) 评论(0) 推荐(0)

摘要:C++的XML编程经验――LIBXML2库使用指南写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没有详细介绍如何在windows平台下进行编程,更很少提到如何解决中文问题。基于以上几点原因,决定写一个在Windows平台下,使用C/C++语言,应用LibXml2库来进行xml文档操作,同时使用ICONV库 阅读全文
posted @ 2013-10-21 04:56 RodYang 阅读(445) 评论(0) 推荐(0)

摘要:Linux下载工具Curl也是Linux下不错的命令行下载工具,小巧、高速,唯一的缺点是不支持多线程下载。以下是他的安装和功能。安装$ tar zxvf curl-7.14.0.tar.gz $ cd curl-7.14.0/ $ ./configure $ make $ make test $ make install参数详情参数:描述-M/--manual显示全手动-n/--netrc从netrc文件中读取用户名和密码--netrc-optional使用 .netrc 或者 URL来覆盖-n--ntlm使用 HTTP NTLM 身份验证-N/--no-buffer禁用缓冲输出-o... 阅读全文
posted @ 2013-10-11 14:18 RodYang 阅读(1014) 评论(0) 推荐(0)

摘要:url为http://mywebsite.com/index.php?a=1&b=2&c=3web形式下访问url地址,使用$_GET是可以获取到所有的参数curl-shttp://mywebsite.com/index.php?a=1&b=2&c=3然而在linux下,上面的例子$_GET只能获取到参数a由于url中有&其他参数获取不到,在linux系统中&会使进程系统后台运行必须对&进行下转义才能$_GET获取到所有参数curl-shttp://mywebsite.com/index.php?a=1\&b=2\&c=3 阅读全文
posted @ 2013-10-11 14:14 RodYang 阅读(23684) 评论(1) 推荐(4)

摘要:在Linux中使用curl命令时,偶尔会遇到一些URL跳转到新的URL,即HTTP中的3XX(redirection,重定向)。$curl -s -I $URL > log这时在返回的报文中,有Location字段标明了新的URL。$cat logHTTP/1.1 302 FoundExpires: -1Cache-Control: private, max-age=0Pragma: no-cacheLocation: http://182.118.2.11/youku/5571865A52945820CFCE162719/03000811074CDDB614769602996C2442 阅读全文
posted @ 2013-10-10 15:09 RodYang 阅读(7124) 评论(0) 推荐(0)

摘要:linux下的curl,有着非同一般的魔力,有人称它为下载工具,我更倾向于叫它“文件传输工具”因为它好像无所不能。从常见的FTP, HTTP, TELNET,等协议,还支持代理服务器,cookies,下载以及上传文件,curl 打印页面curlwww.baidu.comcurl 抓取一个页面,然后进行保存 -o (小写的英文字母 o )curl -x ip:port 指定代理curl -x 代理ip:端口 ,使用代理访问。curl -D cookies 保存cookie在本地。curlwww.baidu.com-o baidu.html -D baidu.txtcurlwww.baidu.co 阅读全文
posted @ 2013-10-09 15:28 RodYang 阅读(394) 评论(0) 推荐(0)

摘要:1、下载单个文件wget url+filename下载过程中同时可以看到四项信息已经下载的比例已经下载的大小当前下载的速度剩余的时间2、使用一个大写O做参数表示另存为wget -O save_name url这种方法适用于对应链接中没有显式文件名的情况。例如: wget -O xx.zip http://www.vim.org/scripts/download_script.php?src_id=7701再用不带-O参数的下载一次。ls -al总计 132drwxr-xr-x 2 root root4096 07-12 10:43 .drwxr-xr-x 4 root root4096 07- 阅读全文
posted @ 2013-10-09 11:49 RodYang 阅读(465) 评论(0) 推荐(0)

摘要:linux下libnet编程 亲自测试可用亲自测试 如果build包的时候 只要把类型改了 就能改成相应的协议。0x0800 ip0x0806 arp0x86DD IPv60x86ee idmp了至于ipv6的包的话 在那就不需要改了只有协议号需要改我最后安装的是libnet-1.1.4.tar.gz可用编译的时候gcc -o libnet libnet.c -lnet安装完了 /usr/include/libnet.h里面就有了除了下面这个例子中一次一个数据包libnet也提供了多数据包内存初始化int libnet_init_packet_arena(struct libnet_arena 阅读全文
posted @ 2013-09-28 05:44 RodYang 阅读(1785) 评论(0) 推荐(0)