linux
文章平均质量分 80
silent狼
喜欢安静的思考...
展开
-
linux安装、编程环境搭配
缘由:早就该固定使用了,中途也断断续续的使用一段时间,作为程序员大概应该使用linux,至于为什么呢?我现在暂时还回答不能很完整,关键就在服务器方面linux占决定统治地位,所以必须要早熟悉linux接口,而且在分布式方面linux也非常重要。再直观、势利一点,总是在招聘上看见熟悉linux下开发java、c/c++等等的语句。所以在linux下开发、学习很原创 2014-02-16 13:56:35 · 939 阅读 · 0 评论 -
epoll的原理
缘由昨夜再把深入理解nginx中epoll的部分读了一遍,这次主要关注epoll的原理。这篇博客也是用自己的话转述了书中的内容。预想场景假设我们的服务器端的进程同时与100万个用户保持着TCP的链接,但是这100万个用户中并不是所有的用户都在发送请求。那么也就是说只有几十个用户是发送来了请求的。所以,实际上我们的进程只是处理这100万个链接中的几十个。为了接受这些响应,我们首先要做原创 2014-04-30 14:56:54 · 1033 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第三章:文件I/O
程序清单 3-1“ 测试能否对标准输入设置偏移量/** * 程序清单 3-1“ 测试能否对标准输入设置偏移量 P51 * * zy: * 对lseek函数加深认识。 * * 书中第一个例子/etc/motd是进入tty的一段文字,所以可以随意调整 * 书中第二个例子表示对管道进行lseek,但是不可以的 * 书中第三个例子,我相应的目录下没有找到该文件,我使用mkfifo原创 2014-03-07 10:44:20 · 1020 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第十三章:守护进程
程序清单 13-1 初始化一个守护进程/** * 程序清单 13-1 初始化一个守护进程 P343 * zy: * 书上解释的很清楚了,我只是敲了一遍代码 */#include "apue.h"#include //功能:记录至系统记录。#include //File Control Operations#include //sys/resource.h - def原创 2014-03-18 12:18:57 · 772 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第十四章:高级IO
程序清单 14-1 长的非堵塞write/** * 程序清单 14-1 长的非堵塞write P357 * * zy: * 可以运行,和书上类似。 */#include "apue.h"#include "error.c"#include #include //定义了通过错误码来回报错误资讯的宏 //宏定义为一个int型态的左值, 包含任何函式使用errno功能所原创 2014-03-20 12:44:44 · 759 阅读 · 0 评论 -
正确使用unix高级环境编程的源码 以及 数据库函数库代码的运行
缘由apue这本书看了这么久,例子代码也写了一堆堆。直到看到数据库函数库这一章算是真正的让我兴奋了,写了那么多api,终于能用来实实在在做出一个东西来了,而且做的东西非常叼哦,是数据库。不过今天正准备着先跑跑程序和看看源码来着,确发现怎么也运行不了。这是因为我单独把我自己以为需要的文件:apue_db.h和db.c拷在我自己写的代码的文件,然后直接编译,结果一大堆错误,发现无论如何也运行不原创 2014-03-22 15:32:03 · 1163 阅读 · 1 评论 -
unix高级环境编程 第二十章 数据库函数库:习题讨论
缘由源代码看完了,大概看懂了,现在来自己回答一下课后练习题,来看看自己是不是真的看懂了。习题20.1题干在_db_dodelte中使用的加锁是比较保守的。例如,如果等到真正要用空闲链表时再加锁,则可获得更大的并发度。如果将调用write_lock移到调用_db_writedat和_db_readptr之间会发生什么呢?_db_dodelte方法如下:/* * De原创 2014-03-24 17:03:51 · 720 阅读 · 0 评论 -
linux内核 与 web服务器 相关的某些参数(sysctl)
缘由昨天,深入理解ng原创 2014-04-06 14:07:31 · 1119 阅读 · 0 评论 -
Linux man page - epoll(7)
缘由主要是今天看到 深入理解nginx的第九章:事件模块。不得不说作者写的特别好。让我明白了epoll。不过总感觉看懂中文的,显得自己比较不专业和没有上进心。所以决定翻译一下:epoll(7) - Linux man page。我相信没有哪里比man手册更权威了。注意,epoll在这个词在man手册里有两个分类里面有,分别是:epoll(4) - Linux man p翻译 2014-04-22 22:25:48 · 2421 阅读 · 0 评论 -
APUE: 12-2程序清单 使用递归锁 处:能不能不用递归锁? P321
缘由有为同学在http://blog.csdn.net/zy825316/article/details/21390199给我留了问题:我是初级学习UNIX的,我看了好久没懂,程序清单12-2中指出的retry函数因为被安排为原子操作而函数内进行加锁。retry内加锁是不是想让里面的操作粒度更细?还有如果我另外为retry创建一个互斥量,是不是最初的那个互斥量可以不指定原创 2014-04-26 00:53:59 · 951 阅读 · 0 评论 -
unix高级环境编程 第二版 P328 翻译错了一个地方(第十二章 线程控制)
中文版如下图:上面那句: 这样其他线程试图对这个互斥量的加锁就会被堵塞是错误的,应该是同一个线程。相当与于说,同一个线程在信号处理程序之前调用了一次getenv_r,加了一次锁,然后信号来了,又在信号处理程序中调用getenv_r,又加了一次锁。那么如果不是递归锁,就会死锁。所以必须要递归锁。另付上英文原版为证明:If we make getenv_r原创 2014-03-17 20:19:09 · 733 阅读 · 1 评论 -
unix高级环境编程 例子 代码实现练习 第十一章:线 程
程序清单 11-1 打印线程ID/** * 程序清单 11-1 打印线程ID P290 * * zy: * * 创建了一个线程并且打印了ID * * 编译命令:gcc test2.c -lpthread * 因为pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a。 * 运行结果:asd@asd-desktop:~/workspa原创 2014-03-17 15:08:59 · 839 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第一章:unix基础知识
缘由花了接近一周的时间死劲的读新买了的:所以,没有写博客,现在差不多大概读完了,但是没有敲代码,没有查看练习题,只是对这本书有一个粗浅的认识。现在的计划是:敲完书中所有的例子代码然后解决练习题注意:主要是写代码,不会重复书中的话。当然真的有价值的总结还是会进行的,原来犯的错误就是老是总结书中的观点、重复书中的话,非常耽误时间。今天是unix的基础知识,所以还看不原创 2014-03-06 16:40:33 · 739 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第八章:进程控制
程序清单 8-1 fork函数示例 P173/** * 程序清单 8-1 fork函数示例 P173 * * zy: * 在下面的代码中, * 关键是区分好 * 父进程执行的部分 * 子进程执行的部分 * 父、子进程都执行的部分 * * 父进程和子进程谁先进程是不确定的。 */#include "apue.h"#include "error.c"int glob原创 2014-03-13 12:03:29 · 945 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第四章:文件和目录
程序清单 4-1 对没一个命令行参数打印文件类型/** * 程序清单 4-1 对没一个命令行参数打印文件类型 * * zy: * 这就是说我们给一个指定的文件,请利用api判断出这个文件是什么类型 * 主要是利用了定义了在的宏,P72有详细的解释 * 我们可以判断出是普通文件、字符特殊文件等等 * * */#include "apue.h"#include "error原创 2014-03-08 13:42:19 · 1021 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第五章:标准IO的效率
程序清单 5-1 用getc和putc将标准 P117/** * 程序清单 5-1 用getc和putc将标准 P117 * * zy: * 代码简单到我都不想再敲一遍,作者做了这么多, * 最关键的就是想说: * 标准IO库与直接调用read和write函数相比并不会慢非常多。 * 对于应用程序来说,主要是应用业务消耗了非常多的时间,而不是IO。 * */#include原创 2014-03-08 16:58:58 · 703 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第六章:系统数据文件和信息
程序清单 6-1 getpwnam函数/** * 程序清单 6-1 getpwnam函数 P135 * * zy: * 返回口令文件,也就是/etc/passwd文件中的每一项。 * 本列我们写一个函数,调用函数可以得到与传入参数name相同的某一个口令文件的所有项 * 实际上getpwnam函数已经被实现好了,我们直接调用即可,但是这里我们只是写出了其一个实现 */#in原创 2014-03-08 20:43:28 · 736 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第九章:进程关系
程序清单 9-1 创建一个孤儿进程组 P229 /** * 程序清单 9-1 创建一个孤儿进程组 P229 * * zy: * 注意这里是孤儿进程组,是整个进程组都是孤儿, * 我们一般称一个父进程已经终止的进程为孤儿进程,这种进程将会被init进程收养 * * 孤儿进程组的定义还是比较绕的,如下: * 如果该组成员的父进程要么是同一个组的成员,要么是不是该组所属会话的成员原创 2014-03-14 09:38:32 · 735 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第七章:进程环境
程序清单 7-1 经典c程序 P148/** * 程序清单 7-1 经典c程序 P148 * * zy: * 注意这个经典的c程序是不完整的,没有返回值,没有声明main的返回类型 * 才会造成这样的情况 * 这是因为直接返回了main中栈和寄存器的内容 * * 书上说返回码的是随机的,但是我始终得到8 * */main() { printf("hello!");原创 2014-03-09 09:18:34 · 773 阅读 · 0 评论 -
unix高级环境编程 例子 代码实现练习 第十章:信号
程序清单 10-1 捕捉SIGUR1和SIGUSR2的简单程序 P241/** * 程序清单 10-1 捕捉SIGUR1和SIGUSR2的简单程序 P241 * * zy: * 这两个信号用于用户随意使用 * * 另外在测试中使用了kill命令,注意kill只是发送信号的命令,而不是真的杀死 * */#include "error.c"#include "apue.h原创 2014-03-16 13:32:17 · 1208 阅读 · 1 评论 -
unix高级环境编程 例子 代码实现练习 第十二章:线程控制
程序清单 12-1 以分离的状态创建的线程/** * 程序清单 12-1 以分离的状态创建的线程 P315 * zy: * 没什么好说的,说的很清楚了 * */#include #include "apue.h"int makethread(void *(*fn)(void *),void *arg){ int err; pthread_t tid; pthread_a原创 2014-03-17 21:48:38 · 1079 阅读 · 1 评论 -
shell脚本:利用curl和sed制作一个命令行字典
缘由最近看了看linux shell 脚本攻略这本书,可以说是久仰大名,看了真是感慨万分。世间竟然有如此美妙的东西,我觉得前几天用了那么多java代码写出来的爬虫,如果用shell来写的,应该更不错!本人最难受的就是看了书之后那么好像会,其实不会的感觉。所以这次专门写了一个命令行的字典,用法非常简单,代码也不多。我们来看看效果,如下图:本次实验主要是受到书中几个项目的启发,比如命令行模式的原创 2014-05-27 11:39:45 · 2585 阅读 · 0 评论