Linux网络编程示例
简单TCP、UDP编程示例。 linux网络编程示例简单TCP、UDP编程示例。TCPTCP通信模型服务器代码#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <errno.h>#include <stdio.h>#include <unistd.h>#includ...
2024-01-10linux套接字编程示例
简单TCP、UDP编程示例。 linux套接字编程示例简单TCP、UDP编程示例。TCPTCP通信模型服务器代码#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <errno.h>#include <stdio.h>#include <unistd.h>#inclu...
2024-01-10Linux系统编程之进程概念
注:本文部分图片来源于网络,如有侵权,请告知删除1. 什么是进程?在了解进程概念之前,我们需要先知道程序的概念。程序,是指编译好的二进制文件,这些文件在磁盘上,并不占用系统资源。进程,指的是一个程序的执行实例,是操作系统分配系统资源的单位,这里的系统资源有CPU时间,内...
2024-01-10Linux编程实现递归查找文件
命令格式如下:SCRIPT_NAME SEARCH_ON_DIR SEARCH_FILENAME 1 #!/bin/bash 2 Find(){ 3 echo $3" "$1 4 files=`ls $1` 5 for file in $files 6 do 7 if [ -d $1"/"$file ] 8 then 9 Find $1"/"$file $2 `expr $3 + 1`10 ...
2024-01-10Linux系统编程—条件函数值
条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一...
2024-01-10Linux系统编程—条件函数值
条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一...
2024-01-10Linux系统编程 —线程属性
在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性。一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题。但是,有时项目中我们对线程会有些特殊的要求,比如修改线程栈的大小,直接调用线程的库函数无法满足需求...
2024-01-10Linux系统编程—进程间同步
我们知道,线程间同步有多种方式,比如:信号量、互斥量、读写锁,等等。那进程间如何实现同步呢?本文介绍两种方式:互斥量和文件锁。互斥量mutex我们已经知道了互斥量可以用于在线程间同步,但实际上,互斥量也可以用于进程间的同步。为了达到这一目的,可以在pthread_mutex_init初始化之前,...
2024-01-10Linux编程之ICMP洪水攻击
我的上一篇文章《Linux编程之PING的实现》里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?这里我将介绍ICMP另一个很有名的黑科技:ICMP洪水攻击。 ICMP洪水攻击属于大名鼎鼎的DOS(Denial of Service)攻击的一种,一种是黑客们喜欢的攻击手段,这里本...
2024-01-10详解Linux的SOCKET编程
本篇文章对Linux的SOCKET编程进行了详细解释,文章后面分享了一个编程实例供大家学习。1. 网络中进程之间如何通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如U...
2024-01-10Linux系统编程 —并行性竞态
时序竞态什么是时序竞态?将同一个程序执行两次,正常情况下,前后两次执行得到的结果应该是一样的。但由于系统资源竞争的原因,前后两次执行的结果有可能得到不一样的结果,这个现象就是时序竞态。pause函数函数原型:int pause(void);函数作用:进程调用pause函数时,会造成进程主动挂起(...
2024-01-10Linux系统编程 —并行性竞态
时序竞态什么是时序竞态?将同一个程序执行两次,正常情况下,前后两次执行得到的结果应该是一样的。但由于系统资源竞争的原因,前后两次执行的结果有可能得到不一样的结果,这个现象就是时序竞态。pause函数函数原型:int pause(void);函数作用:进程调用pause函数时,会造成进程主动挂起(...
2024-01-10Linux下C语言实现C/S模式编程
由标题可知,这篇文章主要讲如何用C语言实现一个C/S模式的程序。主要功能:时间回送。客户机发出请求,服务器响应时间,并返回服务器时间,与客户机进行同步。废话不多说,下面直接贴出源代码。代码如下:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #inclu...
2024-01-10Linux系统编程 —堆区之fsync
共享内存概念共享内存是通信效率最高的IPC方式,因为进程可以直接读写内存,而无需进行数据的拷备。但是它没有自带同步机制,需要配合信号量等方式来进行同步。共享内存被创建以后,同一块物理内存被映射到了多个进程地址空间,当有一个进程修改了共享内存的数据,其余的进程均可看见所...
2024-01-10Linux系统编程 —堆区之fsync
共享内存概念共享内存是通信效率最高的IPC方式,因为进程可以直接读写内存,而无需进行数据的拷备。但是它没有自带同步机制,需要配合信号量等方式来进行同步。共享内存被创建以后,同一块物理内存被映射到了多个进程地址空间,当有一个进程修改了共享内存的数据,其余的进程均可看见所...
2024-01-10如何在Linux上以编程方式获取堆的地址
我可以使用来获取堆末尾的地址sbrk(0),但是除了解析内容之外,有什么方法可以以编程方式获取堆头的地址/proc/self/maps吗?回答:我认为解析/proc/self/maps是Linux上找到堆段的唯一可靠方法。并且不要忘记某些分配器(包括我的SLES中的分配器)确实用于大块,mmap()因此内存不再是堆的一部分,可以位于...
2024-01-10Linux系统编程 —读写锁rgwock
读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。读写锁的特性为:写独占,读共享;写锁优先级高。对于读写锁,掌握了这12个字就足矣了。Linux环境下,读写锁具有以下三种状...
2024-01-10Linux系统编程 —读写锁rgwock
读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。读写锁的特性为:写独占,读共享;写锁优先级高。对于读写锁,掌握了这12个字就足矣了。Linux环境下,读写锁具有以下三种状...
2024-01-10Linux系统编程 —套接字量mutex
互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁...
2024-01-10pwn的艺术浅谈(二):linux堆相关
作者:天融信阿尔法实验室公众号:https://mp.weixin.qq.com/s/CjIsHpPPhVqI69oZT4xEqg这是linux pwn系列的第二篇文章,前面一篇文章我们已经介绍了栈的基本结构和栈溢出的利用方式,堆漏洞的成因和利用方法与栈比起来更加复杂,为此,我们这篇文章以shellphish的how2heap为例,主要介绍linux堆的相关数据结构和堆...
2024-01-10Linux系统编程 —套接字量mutex
互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁...
2024-01-10Axuer艺术字体设计
Axuer艺术字体设计的操作其实不难,主要的是要多练习才能轻松的进行掌握。很多小伙伴们都不知道Axure设置文字样式方法,那就一起来看看具体的操作吧。 Axuer艺术字体设计 1、首先打开【Axure软件】,随便创建一个项目。 2、在【左侧的基本元件】中,选择【文本标签】。 3、然后继续...
2024-01-10pwn 的艺术浅谈(一):linux 栈溢出
作者:天融信阿尔法实验室公众号:https://mp.weixin.qq.com/s/2b-tu6OzFGe-3_aHta1HmQ这个系列主要介绍linux pwn的基础知识,包括堆栈漏洞的一些利用方法。这篇文章是这个系列的第一篇文章。这里我们以jarvisoj上的一些pwn题为例来对linux下栈溢出利用和栈的基本知识做一个介绍做一个简单的入门级介绍。题目地...
2024-01-10Spring5响应式编程
要点Reactor 是一个运行在 Java8 之上的响应式流框架,它提供了一组响应式风格的 API除了个别 API 上的区别,它的原理跟 RxJava 很相似它是第四代响应式框架,支持操作融合,类似 RxJava 2Spring 5 的响应式编程模型主要依赖 ReactorRxJava 回顾Reactor 是第四代响应式框架,跟RxJava 2 有些相似。Reactor 项目由P...
2024-01-10Win32API编程——前言
一丶什么是Win32 API? 简单来说,就是微软为了保护操作系统的安全性和稳定性,不允许运行在用户层的进程随意操控系统内核,而是必须按照一定方式。我们用户层要与系统内核层交互(比如对内存、进程操作),只能通过调用Windows内核层提供的接口函数,也就是Win32API来操控。这些API以DLL(动态链...
2024-01-10