linux系统编程
文章平均质量分 70
一直在路上25
热爱技术,坚持才是硬道理
展开
-
linux网络编程基础
linux为用户提供了完善的、强大的网络功能。完善的内置网络,协议与内核紧密联系在一起。免费提供了大量支持internet的软件,能与世界上其他人通过网络进行通信。用户通过一些linux 命令完成文件的传输。远程访问,通过远程访问的功能,可以有效地为多个系统服务,即使相距很远。安全可靠,对读、写进行权限控制,带保护的子系统,审计跟踪,核心授权等。为网络多用户提供了必要的安全保障。linux网络原创 2014-04-27 18:04:18 · 740 阅读 · 0 评论 -
五种I/O模型
1、阻塞I/O 2、非阻塞I/O 3 、I/O复用(s)原创 2014-05-11 19:16:21 · 1169 阅读 · 0 评论 -
文件编程
int read();int write()int lseek原创 2014-04-27 18:05:34 · 486 阅读 · 0 评论 -
读C++ concurrency in action笔记
看到第5页,有时间的时候再看原创 2014-04-28 14:28:36 · 587 阅读 · 0 评论 -
linux下autoconf和automake的使用
作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./c转载 2014-05-14 14:39:22 · 2145 阅读 · 1 评论 -
linux常用命令
1、shell的管道管道可以ba原创 2014-05-30 17:54:06 · 877 阅读 · 0 评论 -
linux查看端口与关闭端口
前提:首先你必须知道,端口不是独立存在的,它是依附于进程的。某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了。下次若某个进程再次开启,则相应的端口也再次开启。而不要纯粹的理解为关闭掉某个端口,不过可以禁用某个端口。1. 可以通过"netstat -anp" 来查看哪些端口被打开。(注:加参数'-n'会将应用程序转为端口显示,即数字格式的地址,如:nfs->2049,转载 2014-05-14 14:37:38 · 974 阅读 · 0 评论 -
shell语法中test命令详解
shell语法中test命令详解几个等效命令 test, /usr/bin/test, [], 和 /usr/bin/[test命令用法。功能:检查文件和比较值1)判断表达式if test (表达式为真)if test !表达式为假test 表达式1 –a 表达式2 两个表达式都为真test 表达转载 2014-08-04 20:02:39 · 653 阅读 · 0 评论 -
查看linux下的隐藏文件
一、命令行状态下缺省状态下ls -l命令是不现实隐藏文件的.隐藏文件是以.开头的, 类似文件有”.htaccess”,”.history”,等等任何文件以点开头的都是隐藏文件. 要查看隐藏文件, 你需要使用命令: ls -la ls -a以下是使用 ls -la 的显示结果:# ls -latotal 68drwxr-xr-x 3 root ro转载 2014-08-15 17:12:09 · 2355 阅读 · 0 评论 -
ldconfig命令与/etc/ld.so.conf的作用
Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。 第二类是动态链接的可执行程序。 静态可执行程序与动态可执行程序比较 我们可以用 ldd 命令来确定某一特定可执行程序是否为静态链接的: # ldd转载 2014-09-17 15:59:48 · 1551 阅读 · 0 评论 -
shell学习
1:shell脚本给变量赋值的时候=原创 2014-11-06 16:15:28 · 640 阅读 · 0 评论 -
socket编程中recv与send函数
recv函数会将套接字缓冲区中的内容读出,但不清空,与read函数的区别在此。此函数有一个flag标志位,设为MSG_PEEK。send函数会将缓冲区中的内容写入到套接字,也不清空,与write函数的区别在此。用这两个函数可以先接收或发送缓冲区中的内容,然后再用readn(此时缓冲区中的内容依然存在)与write函数去继续判断换行符/n,对缓冲区内容实现换行输出。echocli.c原创 2014-05-11 19:17:15 · 2105 阅读 · 0 评论 -
SIGPIPE信号
往一个已经接收FIN的套接中写是允许的,接收到FIN仅仅代表对方不再发送数据。在收到RST段之后,如果再调用write就会产生SIGPIPE信号,对于这个信号的处理我们通常忽略即可。signal(SIGPIPE, SIG_IGN);转载 2014-05-11 19:16:53 · 1087 阅读 · 0 评论 -
TCP/IP基础
MTU最大传输单元,以太网和IEEE802.3对数据帧的长度都有限制,其原创 2014-05-09 08:39:27 · 1119 阅读 · 0 评论 -
socket实现的一个基本点对点聊天程序
p2pcli.c#include #include #include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \ { \ perror(m原创 2014-05-10 19:31:13 · 12652 阅读 · 5 评论 -
socket编程基础2
包含头文件功能:创建一个套接字用于通信原型int socket(int domain, int type, int protocol);参数qdomain :指定通信协议族(protocol family)qtype:指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAWqprotocol :协议类型q返原创 2014-05-10 17:42:11 · 725 阅读 · 0 评论 -
编写makefile时注意事项
CFLAGS=-Wall -g 这个-Wall开头字母一定要大写。这种小错误会导致不能编译!其次就是在一个目录下面的应该是文件 ,而不能在继续用文件去进行编写代码,因为make寻找当前目录下的makefile,makefile里面用到的文件而不是目录里的代码,如果需要也要通过-l(l链接link)一下。所以再一个目录下,编写文件尽量用vi命令,而不是mkdir。这两个区别要搞清楚。原创 2014-05-10 12:57:07 · 1557 阅读 · 0 评论 -
socket编程基础1
socket可以看成是用户进程与内核网络协议栈的原创 2014-05-10 09:26:21 · 731 阅读 · 0 评论 -
socket编程基础3
服务器端尽可能使用RUSEADDR。在绑定之前尽可能调用setsockopt原创 2014-05-10 18:25:03 · 894 阅读 · 0 评论 -
makefile
使用make命令编译项目文件入门目录:一、make命令的运行过程二、基本gcc编译命令三、简单Makefile文件的编写四、实例一、make命令的运行过程 在shell的提示符号下,若输入"make",则它会到目前的目录下找寻Makefile这个文件.然后依照Makefile中所记录的步骤一步一步的来执行.在我们写程序的时候,如果事先就把compiler程式所转载 2014-05-10 11:30:52 · 657 阅读 · 0 评论 -
用readn与written实现解决粘包问题
使用TCP流式套接字,TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算原创 2014-05-11 10:26:15 · 962 阅读 · 0 评论 -
linux多线程程序设计
线程理论基础:和进程相比,它是一种非常节俭的多任务操作方式。在Linux系统下,启动一个新的进程必须分配原创 2014-04-26 13:20:23 · 955 阅读 · 0 评论 -
waitpid函数
如果在调用 waitpid()时子进程已经结束,则 waitpid()会立即返回子进程结束状态值。 子进程的结束状态值会由参数 status 返回,而子进程的进程识别码也会一起返回。如果不在意结束状态值,则参数 status 可以设成 NULL。参数 pid 为欲等待的子进程识别码,其他数值意义如下:pid进程组识别码为 pid绝对值的任何子进程。pid=-1 等待转载 2014-05-11 19:16:37 · 1820 阅读 · 0 评论 -
网络库的触发机制
接收套接字传过来的数据首先是到内核缓冲区,网络库事件循环中的可读事件触发是将数据从内核缓冲区移动到应用缓冲区中,并会触发一个回调函数OnMessage函数,根据协议判断数据包是否是一个完整的数据包,如果不是完整的数据包,立刻返回,直到内核中又接收到一些数据,可读事件触发,又从套接字接收数据到内核缓冲区拷贝到应用缓冲区。可读可写事件都是内核缓冲区与外面进行交互。应用缓冲技术能很明显的提高系统效率原创 2015-05-23 10:40:01 · 513 阅读 · 0 评论