![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UinxC
学如逆水
慢就是快!
展开
-
UC学习day01 UC开发环境及C语言的总结
UCU unixC c语言 标c什么是标C?C语法+c的标准库函数unix 是操作系统 最稳定 商业版的复习C语言1 常量和变量2 数据类型 访问规则+操作 void *3 运算符的优先级及其结合性4 变量的作用域和生命周期int p;int *p;int **p;大端和小端int arr[3]={11,21,31};数组是类型,自定义类型char...原创 2019-05-11 18:27:07 · 723 阅读 · 0 评论 -
UC学习day14 线程终止 汇合 分离 线程同步 条件变量
一 线程终止 汇合 分离pthread_cancel(3)#include <pthread.h>int pthread_cancel(pthread_t thread);功能:给线程发送一个取消请求参数:thread:指定了目标线程的id.回收线程会收到PTHREAD_CANCELED返回值:成功 0错误 非0 的错误码线程分离参见 pthread_d....原创 2019-05-11 18:29:24 · 121 阅读 · 0 评论 -
UC学习day13 基于TCP的编程封装 并发服务器的实现 基于udp的编程 线程的基础
一 基于TCP的编程 封装实现一次连接多次交换数据客户端发送exit的时候,连接关闭二 并发服务器的实现多进程实现服务器的并发.三 基于udp的编程#include <sys/types.h>#include <sys/socket.h>ssize_t recvfrom(int sockfd, void *buf, size_t len, int f...原创 2019-05-11 18:29:13 · 113 阅读 · 0 评论 -
UC学习day12 基于tcp的网络编程
一 基于tcp的网络编程四次分手编程模型服务器端1 创建通讯设备(端点),返回该端点的文件描述符sfd.socket(2)2 将sfd和服务器的ip地址 端口号绑定 bind(2)3 将sfd设定为被动连接状态,监听客户端连接的到来.将到来的连接放入未决连接队列中.listen(2)while(1){4 从未决连接队列中取出一个进行处理,返回和客户端的连接描述符cfd.如果未决连...原创 2019-05-11 18:29:03 · 163 阅读 · 0 评论 -
UC学习day11 信号从产生到处理的整个过程 网络的基础知识
一 信号从产生到处理的整个过程ctrl+c 按键 产生2号信号1 从bash启动一个可执行程序.2 按下ctrl+c键,产生一个按键中断.进程切换到内核态.3 按键驱动程序将按键解释为2号信号4 在内核态,在进程的PCB中,记录2号信号(信号抵达)5 当进程从内核态切换回用户态的时候,检测进程的PCB,是否有信号到达.6 如果有信号抵达,调用信号处理函数.信号处理函数调用sig...原创 2019-05-11 18:28:53 · 305 阅读 · 0 评论 -
UC学习day10 信号的产生 设置进程的信号掩码集 获取进程的未决信号集 信号从产生到处理的整个过程
一 信号的产生1 硬件产生信号 ctrl+c ctrl+2 使用命令给进程发送信号kill -信号编号 pid3 使用系统调用和库函数实现给进程发送信号kill(2) raise(3) alarm(2)#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);功...原创 2019-05-11 18:28:44 · 160 阅读 · 0 评论 -
UC学习day09 更新进程的映像 环境变量 在程序中使用环境变量 管道 信号的基础
一 更新进程的映像除了execve(2)之外,系统封装了一些库函数.#include <unistd.h>extern char **environ;每个进程都维护着一个环境变量列表.environ这个全局变量指向了当前进程的环境变量列表的首地址.int execl(const char *path, const char arg, …/ (char *) NULL */...原创 2019-05-11 18:28:34 · 195 阅读 · 0 评论 -
UC学习day08 进程的基础 新进程的创建 进程的终止 进程资源的回收 更新进程的映像
一 进程的基础知识进程有自己的pid,也有自己的PCB.到目前,PCB中包含哪些成员?文件描述符 进程的映像进程树 进程间的关系 父子关系 兄弟关系init进程 用户级进程的1号进程所有用户级进程的树根.pstree(1)ps -aux 可以使用这个命令查看进程的相关信息top(1) 可以实时的查看进程的相关信息二 新进程的创建新进程指的就是子进程...原创 2019-05-11 18:28:22 · 231 阅读 · 0 评论 -
UC学习day07 获取文件元数据 文件夹操作 库函数和系统调用函数的关系 文件夹的杂项
一 获取文件的元数据文件有两部分内容构成. 文件的数据 文件的属性信息什么是文件的元数据?属性信息就是文件的元数据文件的数据和元数据在操作系统中是如何布局的.每个文件都有唯一的一个inode和其对应.在inode中分为两部分,一部分保留了文件的数据,一部分保留了文件的元数据.day07$ls -li总用量 0410493 -rw-rw-r-- 1 tarena tarena 0...原创 2019-05-11 18:28:07 · 118 阅读 · 0 评论 -
UC学习day06 文件操作 文件描述符复制 mmap映射
一 文件的操作read(2)#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);功能:从文件读取数据存储到buf中参数:fd:指定了具体的文件,从这个文件中读取数据buf:指定一个地址空间,将数据读取到这个空间里count:最多读取的字节数.请求读取的字节数返回值:成功 返回实际读取...原创 2019-05-11 18:27:57 · 139 阅读 · 0 评论 -
UC学习day05 内存管理 文件基本操作
一 内存管理cat /proc/进程的pid/maps$$ 获取当前进程的pid什么是进程的pid.进程的身份证号就是进程的pid.如何获取进程的pid?getpid(2)#include <sys/types.h>#include <unistd.h>pid_t getpid(void);pid_t getppid(void);栈段的概念栈帧的概...原创 2019-05-11 18:27:48 · 266 阅读 · 0 评论 -
UC学习day04 动态加载 程序中的错误处理 内存管理
一 动态加载什么是动态加载.按需加载.程序在执行的时候,需要使用到动态库里的函数的时候,程序调用动态链接器提供的API,请求动态链接器将需要的动态库加载到内存.dlopen(3) dlclose(3) dlerror(3) dlsysm(3)#include <dlfcn.h>void *dlopen(const char *filename, int flags);...原创 2019-05-11 18:27:39 · 132 阅读 · 0 评论 -
UC学习day03 静态库 环境变量 动态库
一 静态库的制作和使用库文件分为两种 静态库文件 动态库文件静态库文件 使用静态库文件链接生成可执行文件的时候,采用静态链接的方式.文件的命名规则: lib库名.a制作和使用的步骤:1 将所有要加入静态库的模块编译为目标文件.tarena@ubuntu:~/uc/day03/t_math$ lsadd.c main.c mul.c p_math.htarena@ub...原创 2019-05-11 18:27:30 · 185 阅读 · 0 评论 -
UC学习day02 计算机语言发展史 操作系统 大型项目的架构
一 了解操作系统GNU/LINIX操作系统ubuntu linux内核+GNU应用程序+自己开发了一些小程序套件unix linux windows macos ios andoridXENIX informix磁盘的管理内存的管理进程的管理网络通讯中断管理终端管理驱动 …帮助的获取man commandman 1 command ls(1...原创 2019-05-11 18:27:19 · 119 阅读 · 0 评论 -
UC学习day15 线程同步之信号量 system v ipc 共享内存
一 线程同步之信号量#include <semaphore.h>int sem_init(sem_t *sem,int pshared,unsigned int value);功能:初始化一个信号量参数:sem: 指定了要初始化的信号量的地址pshared: 0 多线程 非0 多进程value:指定了信号量的个数返回值:成功 0错误 -1...原创 2019-05-11 18:29:34 · 104 阅读 · 0 评论