Linux
文章平均质量分 82
a_happy_ant
这个作者很懒,什么都没留下…
展开
-
Linux 服务器和客户端socket通信,网络通信,详解
服务器端工作流程:调用 socket() 函数创建套接字 用 bind() 函数将创建的套接字与服务端IP地址和端口绑定调用listen()函数监听socket() 函数创建的套接字,等待客户端连接 当客户端请求到来之后调用 accept()函数接受连接请求,返回一个对应于此连接的新的套接字,做好通信准备调用 write()/read() 函数和 send()/recv()函数进行数据的读写,通过 accept() 返回的套接字和客户端进行通信 关闭socket(close)客户端工作流.原创 2021-11-17 10:23:16 · 3100 阅读 · 0 评论 -
linux 信号量,条件量,详解
线程的知识点太多,太重要,所以分成三部分进行总结学习线程安全多个线程并发同一段代码时,不会出现不同的结果。常见对全局变量或者静态变量进行操作,并且没有锁保护的情况下,会出现该问题。多个线程对临界资源进行竞争操作时若不会造成数据二义性时则线程安全;否则,此时就是不安全的如何实现线程安全常见的线程安全的情况每个线程对全局变量或者静态变量只有读取的权限,而没有写入的权限,一般来说这些线程是安全的类或者接口对于线程来说都是原子操作多个线程之间的切换不会导致该接口的执行结果存在二义性常见的线程不安全原创 2021-11-16 15:26:13 · 250 阅读 · 0 评论 -
Linux 哲学家吃面,详细分析;
一、问题介绍哲学家进餐问题是典型的同步问题。该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有一碗面和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。如下图所示:2、解决办法多线程版思路:选用互斥锁mutex,如创建5个, pthread_mutex_t m[5];模型抽象:5个哲学家 --> 5个线程; 5支筷子 --> 5把互斥原创 2021-11-16 14:49:42 · 143 阅读 · 0 评论 -
Linux 线程,创建,分离,回收详解
并行和并发的区别并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。(并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上有多个进程被同时执行的效果–宏观上并行,针对单核处理器)互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。同步(synchronous):进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程原创 2021-11-16 11:00:07 · 305 阅读 · 0 评论 -
strtol函数,将字符串转换为进制数
详情请咨询:https://blog.csdn.net/wsclinux/article/details/50771430原创 2019-11-12 16:33:57 · 165 阅读 · 0 评论 -
堆栈地址的生长方向,以及一些思考
如何判断栈的增长方向?对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C去解决这个问题。C在哪里会用到栈呢?稍微了解一点C的人都会立刻给出答案,没错,函数。我们知道,局部变量都存原创 2021-11-01 15:59:56 · 2847 阅读 · 0 评论 -
C语言 指针函数与函数指针详解
前言函数指针和指针函数,先来看看两者的定义以及说明。指针函数定义指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式为:*类型标识符 函数名(参数表)看看下面这个函数声明:int fun(int x,int y);这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。接着看下面这个函数声明:int fun(int x,int y);这和上面那个函数唯一的区别就是在函数名前面多了一个号,而这个函数就是一个指针函原创 2021-09-18 11:55:32 · 502 阅读 · 0 评论 -
C语言const限定详解
const 和指针const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据。const 和指针一起使用会有几种不同的顺序,如下所示:const int *p1;int const *p2;int * const p3;在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改,意思是p3只能指向一个固定的地址,但是地址里面的值不能修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的地址),但它们指向的数据不能被修改原创 2020-05-09 16:24:44 · 299 阅读 · 0 评论 -
C语言中的逻辑移位和算术移位
c语言中的移位操作符,在**左移时执行的是逻辑移位,在右移时执行的是算术移位。**那怎么用>>实现右移操作呢?又经过查证得知,无符号数的移位操作都是执行的逻辑移位。那么要想用>>实现逻辑右移就可以将操作数强制类型转化为unsigned类型,如下:int a = 0xfffffffe;int b = (unsigned int)a >> 1;执行的结果是2147483647即0x7fffffff,可见其右移后左端补的是0。综上:C语言中移位操作符实现的是逻辑左移和原创 2020-05-30 13:27:48 · 2785 阅读 · 3 评论 -
c语言static静态变量详解
c语言static变量详解详情请见详情请见https://www.cnblogs.com/heyonggang/p/3198431.html原创 2020-02-07 10:58:16 · 137 阅读 · 0 评论 -
Linux下setitimer的使用
说白了,就是it_value对应的是第一次定时的间隔,就是定时器被设置完毕后,过it_value的时间之后,会有一个信号过来,之后再过it_interval的时间才会有信号过来。如果it_interval值为0,即只定时一次。详情请见以下链接:https://blog.csdn.net/lixianlin/article/details/25604779...原创 2019-12-03 14:53:34 · 117 阅读 · 0 评论 -
内核编译中出现的Unable to find the ncurses libraries or the required header files解决
详情请咨询:https://blog.csdn.net/chenbang110/article/details/7794989原创 2019-11-29 15:28:11 · 299 阅读 · 0 评论 -
Linux sigwait使用心得
详情请参考以下链接:https://blog.csdn.net/haohenghai/article/details/16948915原创 2019-11-27 09:13:17 · 167 阅读 · 0 评论 -
linux中sleep函数的使用和总结
在linux编程中,有时候会用到定时功能,常见的是用sleep(time)函数来睡眠time秒;但是这个函数是可以被中断的,也就是说当进程在睡眠的过程中,如果被中断,那么当中断结束回来再执行该进程的时候,该进程会从sleep函数的下一条语句执行;这样的话就不会睡眠time秒了;头文件: #include <unistd.h>函数:unsigned int sleep (unsign...原创 2019-10-30 15:30:04 · 404 阅读 · 0 评论