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

随笔分类 -  Linux

摘要:只说名命令行改变的方式: 临时改变成英文: export LANG=en_US 临时改变成中文:export LANG=zh_CN.UTF-8 若要长期改变,根据网上的文章,修改/etc/default/local(如果没有就新建一个),之后重启系统。LANG="en_US.UTF-8" LANGUAGE="en_US:en" 阅读全文

posted @ 2011-05-01 16:00 天地玄黄 阅读(935) 评论(0) 推荐(0)

摘要:看一下UFS的构成。 1、每一个disk drive都可以分成好多小的partitions,每个partition都可以使用一种file system。在Unix世界中有各种各样的File system可供使用:UFS,PCFS,HSFS等等。这里介绍UFS。 看下图: 书上没有详细介绍各个细节,只是介绍了i-node。在这个file system中,i-node里存放了有关文件的几乎全部的信息... 阅读全文

posted @ 2011-05-01 15:20 天地玄黄 阅读(241) 评论(0) 推荐(0)

摘要:这一章比较混乱,现在整理一下。 一、数据结构: 1、hostent: 这个数据结构用在gethostbyname这个函数中,表示与host 相关的一些 entries. struct hostent { char *h_name; /* official (canonical) name of host */ char **h_aliases; /* pointer to array of po... 阅读全文

posted @ 2011-04-28 11:02 天地玄黄 阅读(350) 评论(0) 推荐(0)

摘要:原文网址:http://cxw06023273.iteye.com/blog/867304 SCTP协议在UNP第2版中还未提及,是在第3版中新增加的,在第9、10、23章介绍SCTP。 SCTP就好象是TCP和UDP的综合体,既可以单播也能多播,而且连接建立过程使用4次握手而不是TCP的3次握手,在相当程度上防止了类似TCP中的syn flood的攻击方法。 SCTP是面向消息而不是面向连接的,... 阅读全文

posted @ 2011-04-21 21:48 天地玄黄 阅读(727) 评论(0) 推荐(0)

摘要:在IPv4中,一个datagram 的大小最大为65535(2^16), IPv4的header 为20 bytes,UDP的header 为8 bytes,所以,data的大小最大就为65507 bytes。 使用Figure 8.7中的Client 的主函数,其中dg_cli 函数重新写了一下,让它可以传送最大的datagram: #include "unp.h"#include <neti... 阅读全文

posted @ 2011-04-21 21:05 天地玄黄 阅读(588) 评论(0) 推荐(0)

摘要:学习《Unix Network Programming》,有一些问题,随遇随写。我所用的书是 W. Richard Stevens, Bill Fenner, Andrew M. Rudoff. UNIX网络编程 卷1:套接字联网API, 英文版 第三版. 人民邮电出版社, 2009年11月第1版 1、 Figure 8.5, P.243:文中说每个TCP都有自己的Buffer,那么这个Buff... 阅读全文

posted @ 2011-04-21 20:50 天地玄黄 阅读(229) 评论(0) 推荐(0)

摘要:我在本地目录定义了dg_cli()函数,在一个Archieve File中也定义了这个函数。 本地目录中的dgcliconnect.c 中就是这个函数的定义。另一个同样的函数在../libunp.a中。 dgcliconnect.c 编译之后的文件为 dgcliconnect.o。 链接的时候,先链接本地的.o文件,再链接库文件,不会出错: cattz@Ubuntu:~/unp/unpv13e/c... 阅读全文

posted @ 2011-04-21 11:14 天地玄黄 阅读(3112) 评论(0) 推荐(0)

摘要:函数原型为: #include <netinet/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); Return: 0 if OK, –1 on error 这个函数用于获得socket的各种特性,即socket options. 结果放在函数的后两个参数中,... 阅读全文

posted @ 2011-04-20 14:27 天地玄黄 阅读(19019) 评论(1) 推荐(0)

摘要:The following is the code coming from Uinx Network Programming on page 235: int flags; /* set a socket as nonblocking */if( (flags = fcntl(fd, F_GETFL, 0)) < 0) err_sys("F_GETFL error");flags |= O_NON... 阅读全文

posted @ 2011-04-20 10:48 天地玄黄 阅读(321) 评论(0) 推荐(0)

摘要:在《Unix网络编程》中,主要讲Client和Server的交互。有一些规则: 1、在Client端,使用sockfd,而在Server端,使用listenfd: Client:sockfd = Socket(AF_INET, SOCK_STREAM, 0);Server:listenfd = Socket(AF_INET, SOCK_STREAM, 0); 阅读全文

posted @ 2011-04-19 16:02 天地玄黄 阅读(241) 评论(0) 推荐(0)

摘要:在这里,我自己写一个自己的Makefile的例子,说明一下Makefile是怎么写的。 准备工作:为了使我们的代码更加接近真实的大型程序,我们可以从网络上下载一些写好的源代码。我所使用的是 “Unix Network Programming” 这本书中的源代码。代码下载地址为:www.unpbook.com,下载的文件为unpv13e.tar.gz。使用命令 tar –zxvf unpv13e.... 阅读全文

posted @ 2011-04-14 22:17 天地玄黄 阅读(2969) 评论(0) 推荐(0)

摘要:本文摘抄自“跟我一起写Makefile ”,只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器。 原文请看这里:http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile 写完之后才发现基本上都是一些比较枯燥的规则,看看一、二、八三个部分就可以了。当作参考工具吧,什么时候用到... 阅读全文

posted @ 2011-04-14 17:02 天地玄黄 阅读(13528) 评论(0) 推荐(1)

摘要:1、在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行 root@Ubuntu$ ./tcpserv01 &2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ ./tcpserv01^Z[1]+ Stopped ./tcp... 阅读全文

posted @ 2011-04-11 16:22 天地玄黄 阅读(43083) 评论(0) 推荐(2)

摘要:这里简要介绍一下多个Client 同时连接Server 时的处理方法: 1、Server 端调用socket(), bind(), listen()函数建立起自己的socket,并且调用accept()函数等待接收来自Client 的信息。此时的accept() 函数处于blocked 状态。 · socket() 函数的作用是建造一个可以使用的网络连接的基础工具。就像我们想要到电话,就需要有一... 阅读全文

posted @ 2011-04-11 10:45 天地玄黄 阅读(570) 评论(0) 推荐(0)

摘要:本文简要介绍一下在Unix系统中的一些概念,这是Advanced Programming in Unix Enviroment 这本书的第一章的内容 Files 1、在Unix中创建一个新directory的时候,会自动创建两个filenames,即.(called dot) and ..(called dot-dot)。 2、每一个file都有一个File Descriptor。File descriptors are normally small non-negative integers that the kernel uses to identify the files being . 阅读全文

posted @ 2011-04-09 16:57 天地玄黄 阅读(373) 评论(0) 推荐(0)

摘要:原文网址:http://ordinarysky.cn/?p=492 编译源代码 1、从官网下载源代码www.apuebook.com 2、解压 3、默认解压后的源代码名称为:apue.2e,里面包含了所有的代码 4、修改目录,我的系统是ubuntu10.10,修改apue.2e下的Make.defines.linux WKDIR=/home/sdoning/apue/apue.2e(主要是该路径) 5、在apue.2e目录下运行make命令 6、错误与解决 gcc -DLINUX -ansi -I/home/sdoning/apue/apue.2e/include -Wall -D_GNU_S 阅读全文

posted @ 2011-04-09 15:51 天地玄黄 阅读(1876) 评论(2) 推荐(0)

摘要:最里面是Unix内核,在它之上是Unix的系统调用,各种库文件是建立再系统调用之上的,可以由用户程序(application)调用,Shell是一个比较特殊的应用程序(application),它提供了运行其他用户程序的接口。用户程序(application)可以在Shell上运行,可以调用Library运行,也可以直接调用system calls 运行。 阅读全文

posted @ 2011-04-09 14:42 天地玄黄 阅读(3324) 评论(1) 推荐(1)

摘要:在Linux汇编中(NASM),INT指令其实是INTerrupt(中断)的意思(这种中断又叫做software interrupt)。它也就是起了这么一个名字,却并没有什么真正被中断了。 在x86体系结构中,内存中的 0~1024byte 中存放了256个entries,每一个 entry 都有4byte的大小。这是Linux的 interrupt vector table。虽然Linux的版... 阅读全文

posted @ 2011-04-09 14:32 天地玄黄 阅读(4776) 评论(0) 推荐(0)

摘要:When finished the bood “Assembly Language Step by Step”, what to do next? · Study Linux. · Study assembly language. · Write code. · Write more code. What books should I learn? · Ubuntu 8.10 Linux Bible by William von Hagen (Wiley, 2009) · Beginning Linux Programming, Fo 阅读全文

posted @ 2011-04-09 09:43 天地玄黄 阅读(389) 评论(0) 推荐(0)

摘要:Linux允许同一个文件可以有好几个不同的名字,而它们共享一个数据。一个文件发生改变,其他的文件也都会发生改变。这就是Hard Link。 用命令行创建一个链接默认即为硬链接。命令如下: ln {source} {link} 下面是一个例子: ln foo bar即为foo这个文件创建一个硬链接,新名字叫做bar。使用命令查看它们的编号一样:ls -i fools -i bar 硬链接也有一些缺... 阅读全文

posted @ 2011-04-07 14:54 天地玄黄 阅读(2357) 评论(0) 推荐(0)