![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
perror_0
低头攒下每滴汗水,抬头已是一片海洋
展开
-
UNIX-Linux环境编程(八):网络通信
网络通信一、基本概念1. ISO/OSI七层网络协议模型2. TCP/IP协议族3. TCP/IP协议与ISO/OSI模型的对比4. 消息流5. 消息包6.IP地址二、套接字(Socket)1. 接口2. 模式3. 绑定4. 函数5. 编程三、基于TCP协议的客户机/服务器模型1. 基本特征2. 编程模型3. 常用函数四、基于UDP协议的客户机/服务器模型1. 基本特征2. 编程模型3. 常用函数之前有写过socket网络编程的一些基本概念,最近对一些知识点进行梳理之后打算详细的、有层次地归纳一下这些基础原创 2020-06-27 22:31:10 · 259 阅读 · 0 评论 -
UNIX-Linux环境编程(四):文件系统(下)
文件系统(下)一、sync/fsync/fdatasync二、fcntl1. 常用形式2. 文件锁三、stat/fstat/lstat获取文件属性1. 有关S_ISUID/S_ISGID/S_ISVTX的说明2. 常用以下宏辅助分析st_mode四、access五、umask六、chmod/fchmod修改文件的权限七、chown/fchown/lchown修改文件的属主和属组八、truncate/ftruncate修改文件的长度九、link/unlink/remove/rename十、symlink/re原创 2020-06-21 16:12:38 · 256 阅读 · 0 评论 -
UNIX-Linux环境编程(四):文件系统(上)
一、系统调用1、Unix/Linux大部分系统功能是通过系统调用实现的,如open/close。2、Unix/Linux的系统调用已被封装成C函数的形式,但它们并不是标准C的一部分。3、标准库函数大部分时间运行在用户态,但部分函数偶尔也会调用系统调用,进入内核态,如malloc/free。4、程序员自己编写的代码也可以调用系统调用,与操作系统内核交互,进入内核态,如brk/sbrk/mmap/munmap。5、系统调用在内核中实现,其外部接口定义在C库中,该接口的实现借助软中断进入内核。•ti原创 2020-06-21 11:22:57 · 241 阅读 · 0 评论 -
UNIX-Linux环境编程(三):内存管理
一、错误处理1. 通过函数的返回值表示错误返回合法值表示成功,返回非法值表示失败。范例:bad.c#include <stdio.h>#include <limits.h>// 获取文件大小// 成功返回文件大小,失败返回-1long fsize (const char* path) { FILE* fp = fopen (path, "r"); if (! fp) return -1; fseek (fp, 0, SEEK_END)原创 2020-06-20 15:07:19 · 221 阅读 · 0 评论 -
UNIX-Linux环境编程(二):静态库与动态库
一、库1.合久必分——增量编译——易于维护,分久必合——库——易于使用。2.链接静态库是将库中的被调用代码复制到调用模块中, 而链接共享库则只是在调用模块中,嵌入被调用代码在库中的(相对)地址。3.静态库占用空间非常大,不易修改但执行效率高。共享库占用空间小,易于修改但执行效率略低。4.静态库的缺省扩展名是.a,共享库的缺省扩展名是.so。5.环境变量C_INCLUDE_PATH - C头文件的附加搜索路径,相当于gcc的-I选项CPATH - 同C_INCLUDE_PATHCPL原创 2020-06-17 15:34:15 · 231 阅读 · 0 评论 -
UNIX-Linux环境编程(一):开发环境
一、Unix操作系统1. 简介美国AT&T公司贝尔实验室,1971年,肯.汤普逊、丹尼斯.里奇。PDP-11,多用户、多任务、支持多种处理器架构,高安全性、高可靠性,高稳定性。既可构建大型关键业务系统的商业服务器应用,也可构建面向移动终端、手持设备等的嵌入式应用。2. 三大派生版本1) System VAIX: IBM,银行Solaris: SUN->Oracle,电信HP-UXIRIX2) BerkleyFreeBSDNetBSDOpenBSDMac OS X原创 2020-06-16 18:12:41 · 704 阅读 · 0 评论 -
UNIX-Linux socket网络编程(下):UDP和TCP通信的简单范例
一、UDP通信本地通信:a.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/un.h>typedef struct sockaddr* SP;int main(){ // 创建socket int sockfd = socke原创 2020-06-15 14:54:12 · 213 阅读 · 0 评论 -
UNIX-Linux socket网络编程(上):基本概念
一、基本概念OSI模型与TCP/IP模型:OSI(开放系统互联参考模型)为计算机网络设计的一个通信模型,由于太过复杂而没有完全实现,仅仅是一套设计方案。共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP模型是OSI的具体实现,只实现出一部分,还没有完全实现,还有一些漏洞不太安全,是我们目前使用通信模型。TCP/IP也叫协议簇,由一堆网络通信协议组成,其中TCP、IP是最重要的两个协议,因此简称TCP/IP。 共分为四层: 物理层:负责通过网络原创 2020-06-15 10:26:02 · 287 阅读 · 0 评论 -
POSIX线程编程(下):线程的同步与异步
多线程(二):线程的同步与异步一、竞争与同步当多个线程同时访问其共享资源时,由于操作时间不协调,导致数据不一致、不完成,这种现象叫同步。而我们需要在访问共享资源时达到异步的效果。二、互斥量(锁)pthread_mutex_t 互斥锁,是解决同步问题的一项技术。int pthread_mutex_init (pthread_mutex_t *__mutex,const pthread_mutexattr_t *__mutexattr)功能:初始一个互斥锁,也可以使用宏PTHREAD_MUT原创 2020-06-14 18:55:23 · 196 阅读 · 0 评论 -
POSIX线程编程(上):基本概念、特点和常用函数
多线程一、基本概念二、基本特点三、POSIX线程四、线程函数一、基本概念1、线程就是程序的执行路线,它是进程内部的控制序列,是资源的调度单位的基本单位,或者说它是进程的一部分。2、线程是轻量级的,没有自己独立的内存资源、代码段、数据区、堆区、环境变量、命令行参数、文件描述符、信号处理函数、当前目录等资源。3、线程拥有自己独立的栈内存,也就是有自己独立的局部变量,还有独立的线各ID、错误码、信号掩码。4、一个进程可以同时拥有多个线程,也就是拥有多个执行路线,其中一个叫主线程。5、线程是进程的一部分原创 2020-06-14 13:49:03 · 879 阅读 · 0 评论