关闭

互斥锁和条件变量实现读写锁

main函数test.c#include #include #include#include"rwlock.h"my_pthread_rwlock_t rwlock = MY_PTHREAD_RWLOCK_INITIALIZER;#define N 5void* thread_fun(void *arg) { my_pthr...
阅读(20) 评论(0)

信号量和共享内存的配合使用

信号量信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对临界资源访问的同步。 信号量的值大于或等于0时表示可供并发进程使用的资源实体数;小于0时代表正在等待使用临界资源的进程数1、信号集的创建或打开int semget(key_t key, int sems, int sem_flags);key 是由ftok()的到的键值。 nsems指明要创建的信号集包含的信号个数,改参数后面还会提...
阅读(173) 评论(0)

注释转换(c++风格转c风格)

介绍c语言风格的注释为块注释,c++风格为行注释。/*块注释*/ //行注释在项目中人们喜欢用不同风格的注释,或者两种风格的注释混用,这并不影响代码的功能,但是在一些工具当中要求代码的注释风格统一为c或者c++风格。 所以写了一个处理文件注释的代码。分析我们使用了状态机的概念,即在对文件中各个字符检测的时候遇到特定的字符对全局变量赋不同的状态值,来代表代码所处的状态,下面为不同状态间相互转换的示意...
阅读(70) 评论(2)

暑假留校总结

开学自己就大二了,自己这一年里面学习了不少的东西,放假回家和同学们聊了一下,感觉自己确确实实提升很大,单就暑假留校的知识就够自己喝一壶的了。第一周学习了文件操作 ,了解了Linux的文件结构,大概了解了Linux根目录下主要目录的作用。 然后是文件的输入输出操作使用了creat,open,close,read,write等文件的输入输出函数。 最后是文件属性操作,移动和删除,以及目录操作。 这...
阅读(190) 评论(0)

阿里云解决刚创建之后无法ssh联接

博主最近刚买的阿里云服务器,自己迫不及待的用ssh远程联接,但是一直没有动静 什么鬼!然后一直等啊等,出现ssh: connect to host xx.xx.xx.xxx port 22: Connection timed outConnection timed out …,当时对端口还没有很深的了解,只知道端口是设备与外界通讯交流的出口,然后忽视了port 22这个提示…然后就在阿里云的控制台...
阅读(222) 评论(0)

atoi函数的实现

最近看完Linux线程然后在看网络编程,但是网络编程新概念太难了,就看剑指offer这个书缓缓。里面由关一个atoi函数实现的问题感觉非常有趣,就介绍给大家。 #include int atoi(const char *nptr);atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数...
阅读(78) 评论(0)

Linux中互斥锁和条件变量的配合

一段代码引发的思考最近一直都在看Linux_c,在条件变量一节的学习中遇到一些疑惑,先看代码吧#include #include #include pthread_mutex_t mutex; pthread_cond_t cond; void *thread1(void *arg) { pthread_cleanup_pus...
阅读(102) 评论(0)

dup2重定向后的恢复

这周是留校的第二周,写shell分析参数着实难受,更难受的还在后面,由于自己shell的结构比较奇特,在fork之前已经进行了重定向,导致在excv执行程序之后结果无法打印到屏幕上。好生苦恼,好在万能的Google解决了这个问题,因此为大家分享一下。 咱们先来看个代码吧#include #include #include #includ...
阅读(150) 评论(0)

关于vfork的小知识

介绍vfork和fork一样都可以用来创建一个新进程,与fork相比,它有一些自己独特的用处。下面是他们的一些异同 * vfork 与fork一样都是调用一次,返回两次(一个是父进程调用vfork后的返回值,该返回值为子进程的pid。一个是子进程调用vfork的返回值,该返回值为0) * 使用fork创建一个子进程的时候,子进程只是完整复制子进程的资源。这样得到的子进程独立于父进程,具有...
阅读(112) 评论(2)

Linux中ls -a,-l,-r,-R命令的实现

ls简介ls是我们使用Linux最常用的命令,可以用来打印当前目录或者制定目录的清单,显示出文件的一些信息等。 ls -a可以将目录下的全部文件(包括隐藏文件)显示出来 ls -l 列出长数据串,包括文件的属性和权限等数据 ls -r将排序结果反向输出,例如:原本文件名由小到大,反向则由大到小 ls -R连同子目录一同显示出来,也就所说该目录下所有文件都会显示出来(显示隐藏文件要加-a参数)...
阅读(229) 评论(0)

Linux中chmod指令的实现

chmod命令可以使用八进制数来指定权限。首先man 2 chmod查看chmod函数原型 为int chmod(const char *pathname,mode_t mode);权限更改成功返回0,失败返回-1.错误代码储存在errno中#include #include //strtol对应头文件 #include<sy...
阅读(327) 评论(2)

赫夫曼树以及赫夫曼编码

1.概念赫夫曼树赫夫曼树,又称最优树,是一类带权路径长度最短的树。 首先给出路径和路径长度的概念。从树中一个节点到另一个节点之间的分支构成这两个节点之间的路径,路径上的分支数目叫做路径长度。树的路径长度是从树根到每一节点的路径长度之和。 考虑上带权的节点。节点的带权路径长度为从该结点到树根之间的路径长度与节点上权的乘积。树的带权路径长度为树中所有叶子节点的带权路径长度之和,通常记作WPL=∑nk...
阅读(157) 评论(1)

define和typedef的区别

由于最近接触数据结构比较多,经常会遇到 #define int ElenType等等的一些宏定义,以及在定义链表节点的时候经常要用到typedef,感觉define和typedef有一些相似的地方,但是也存在一定的区别。define是宏定义,typedef是类型定义#define ptr1 char* typedef char * ptr2; ptr1 p1,p2; ptr2 p3,p4;...
阅读(93) 评论(0)

二叉树的层次遍历

二叉树的层次遍历需要用到队列方面的知识,二叉树之前已经讲过一部分操作,这次主要讲二叉树的层次遍历 所谓的层次遍历即就是先从根结点开始遍历,然后以此根结点的下一级节点(默认从左往右遍历),直到完全遍历。 上图层次遍历的结果应当为A B G C D H E F ,下面咱们来看操作二叉树头文件#ifndef _TREE_H #define _TREE_H#define ElemType char...
阅读(205) 评论(0)

队列的实现

队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。 ———维基百科 我们可以用队列完成很多的操作...
阅读(211) 评论(0)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:4029次
    • 积分:240
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:0篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论