Linux系统编程
文章平均质量分 58
Kang_TJU
Talk is cheap!
展开
-
linux脚本-常用makefile写法
makefile贴一段自己常用的makefileEXE_DIR := ./binINC_DIR := ./inc ./inc/net ./incSRC_DIR := ./srcTARGET := $(EXE_DIR)/mainOBJS := $(wildcard ./src/*.cpp)CFLAGS := -I$(INC_DIR) -D_REENTRANT -lpthread -std=原创 2016-11-05 16:53:19 · 428 阅读 · 0 评论 -
linux系统编程-epoll
本文对epoll的注意点做一个小结。接口epoll常见的接口有三个:1.创建epoll的实例,在内核中初始化相应的数据结构// 创建epoll instance// linux 2.6.8之后,size参数没有实际意义。但是,需要比0大int epoll_create(int size);2.向epoll instance注册,修改,删除相应的fd及其事件。这点有别于select,后者每次监听的原创 2017-09-25 00:17:56 · 411 阅读 · 0 评论 -
linux多线程-操作系统线程同步互斥
这一目主要我想得是理论和实际结合的办法去做,先将理论,把这块在操作系统中的内容先进行陈述。然后用linux下的代码去真正实现。理论这一块,主要是参考了本科时的操作系统课本。具体的内容就不多说了,给出伪代码我觉得已经很清晰了。#define N 128 // 缓冲区大小即缓冲池中缓冲区个数int buffer[N]; // 缓冲池int front = 0;原创 2017-05-19 22:05:52 · 541 阅读 · 0 评论 -
线程池实现
linux-c 线程池实现原创 2017-08-09 17:35:26 · 308 阅读 · 0 评论 -
linux多线程-懒人笔记(二)
这一目记录我对linux多线程的继续学习。条件变量学习这一块的学习围绕两个问题来,本质都是针对下面这个接口:int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);问题1cond为什么要结合wait一起用? 1.这么考虑,这个问题要说清楚。必须从为什么原创 2017-08-16 12:33:37 · 332 阅读 · 0 评论 -
linux系统编程-read()write()函数分析
本文记录我对read(),write()函数这两个常见调用的再次学习。参考了如下链接: [socket:阻塞与非阻塞模式下,read和write的返回值 ]read阻塞调用:#include <stdio.h>#include <stdlib.h>#include <sys/select.h>#include <sys/types.h>#include <sys/time.h>#inc原创 2017-08-14 15:06:57 · 635 阅读 · 0 评论 -
linux系统编程-5种I/O模型
本文记录我对linux5种I/O模型的学习。参考了如下的链接,作者的原文写的非常赞,建议直接看作者的原文。作者:陶邦仁 链接:http://www.jianshu.com/p/486b0965c296 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。概述1 . 网络I/O的本质是socket读取,socket在linux系统被抽象为流,IO可以理解为对流的操作2原创 2017-08-14 10:52:28 · 744 阅读 · 0 评论 -
基本概念-同步、异步、阻塞、非阻塞
早上复习了下这几个概念,做一个简单的总结。 主要参考了这篇链接:[聊聊同步、异步、阻塞与非阻塞](ps:这篇写的真心赞啊!大家可直接看这篇)概述 同步异步主要是从消息通知的机制角度来说的,而阻塞与非阻塞关注的则是等待消息通知时的状态。 也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者。 简言之: 同步:消息处理着主原创 2017-08-08 11:59:16 · 332 阅读 · 0 评论 -
linux网络-gethostbyname
代码#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <arpa/inet.h>int main( int argc, char* argv[] ){ struct hostent* host; if( argc < 2 ){ printf( "Usage : %s <hostname>原创 2017-07-19 20:47:13 · 306 阅读 · 0 评论 -
linux网络-点分十进制和网络字节序转换
基本概念#include <arpa/inet.h>in_addr_t inet_addr(const char *string);该函数的作用是将用点分十进制字符串格式表示的IP地址转换成32位大端序整型。成功时返回32位大端序整型数值,失败时返回 INADDR_NONE 。代码#include <stdio.h>#include <arpa/inet.h>int main( void ){原创 2017-07-14 15:36:51 · 1746 阅读 · 0 评论 -
linux时间-获取系统时间
基本概念获取系统时间主要用到如下的结构与函数:struct timeval{ long int tv_sec; // 秒数 long int tv_usec; // 微秒数}相应的获取当前系统时间的函数:#include <sys/time.h>int gettimeofday(struct timeval *tv, struct timezone *tz原创 2017-07-14 15:08:09 · 437 阅读 · 0 评论 -
网络基础-MAC和IP的区别
本文想说一下mac和ip的区别,之前对这两个概念一直似懂非懂,也没有更细致的去考虑这两个问题。文本参考了[有了ip地址,为什么还要用MAC地址],并对文中内容做了自己的梳理。分层的角度这个角度的考虑是我自己比较认可,从网络分层的角度去说为什么要有这两种地址。问题的核心在于网络上的分层概念。第二层有很多不同的网络,如以太网,3g网络,ppp网络。不同的网络有不同的网络终端标识方法,比如以太网用Mac原创 2017-07-13 15:14:06 · 544 阅读 · 0 评论 -
linux多线程-懒人笔记(一)
linux多线程懒人笔记和相关代码原创 2017-05-12 23:20:42 · 848 阅读 · 0 评论 -
网络基础-TCP/IP基础(四)
本目内容还是为上课笔记,主要为自己总结。所以,写的不是很规范。 承接上一目,本目主要讲传输层的相关内容。 主要有一下几个点: - TCP特点 - TCP报文格式 - 连接建立三次握手 - 连接终止四次挥手 - TCP如何保证可靠性TCP特点基于字节流: 基于字节流的传输服务。TCP传输的数据是segment。后者是没有边界的,是一个字节流。存在粘包问题。既然当前层不解决这个问原创 2016-11-16 10:05:32 · 430 阅读 · 0 评论 -
网络基础-TCP/IP基础(三)
本目内容还是为上课笔记,主要为自己总结。所以,写的不是很规范。 承接上一目,本目主要将网络层的相关内容。 主要有一下几个内容:IP数据报格式网际校验和的计算路由的先关内容IP数据报格式首先,给出其格式的图示: 版本长度:4位含义:IP协议版本号。4代表IPv4, 6代表IPv6。首部长度长度:4位含义:IP头部数据的长度。以32位的字节为单位(4B),最大值为0x1原创 2016-11-15 11:01:58 · 510 阅读 · 0 评论 -
网络基础-TCP/IP基础(二)
本目内容还是为上课笔记,主要为自己总结。所以,写的不是很规范。主要为自己的记载。 承接上一目,继续总结一些基本概念。基本概念最大传输单元MTUmaximum transmission unit,如果超过mtu,需要分片两台通信主机中的最小MTU被称作路径MTU传输过程中应该避免分片,分片会降低通信效率。以太网帧格式 既然说到帧,那肯定是针对链路层而言。ICMP(IP层)主要用来传递差错原创 2016-11-14 23:10:47 · 312 阅读 · 0 评论 -
网络基础-TCP/IP基础(一)
ISO/OSI参考模型各层功能传输层:(Transport layer)提供可靠的数据传输服务,它检测路由器丢弃的包,然后产生一个重传请求,能够将乱序收到的包。重新进行排序。本层数据单位是:segment本层定义的规范有:T网络层:(Network layer)网络层负责将各个子网之间的数据进行路由选择,分组与重组。本层中数据单位是packet。本层定义的规范有:IP,RIP、OSPF原创 2016-11-14 22:28:27 · 421 阅读 · 0 评论 -
linux系统编程-一个demo
本目展示一个linux环境下系统编程的一个demo。主要是为了讲解项目下文件夹的布局以及makefile的写法。 程序的源代码来自于书籍《Accelerated c++》一书当中第四章的例子。布局一个基本的项目主要是以下5项构成:src:存放项目的源文件。目录可以细分。inc:存放项目的头文件。目录可以细分;bin:存放二进制可执行文件。Makefile:Makefile文件run.sh原创 2017-11-29 13:41:55 · 846 阅读 · 0 评论