自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 linux多线程(一)

多线程肤浅概念多进程是资源管控的最小单位那么多线程是资源调度的最小单位,多进程就像一个大厦有着所有资源那么多线程就是大厦中的那些办公室调用大厦的资源来进行工作。linux提供了关于线程创建,控制,设置属性的API./*多线程句柄数据类型*/pthread_t thread;/*创建线程并且指定运行函数*/int pthread_create(pthread_t &thread, const pthread_attr_t *attr, (void*)(*rth)(void*), void

2021-03-21 10:59:28 107

原创 linux多线程(互斥锁)

互斥锁当多个线程想要对同一个资源进行操作的时候,为了使得不出现脏读的情况,要用互斥锁来规定线程的先后顺序。互斥锁和信号量的作用类似。互斥锁的API/*锁的数据类型*/pthread_mutex_t mutes;/*锁的初始化*/int pthread_mutex_init(pthread_mutex_t*, const pthread_mutexattr_t*);/*锁的销毁函数*/int pthread_mutex_destory(pthread

2021-03-16 20:47:27 129

原创 linux多进程(pipe)(二)

pipe函数int pipe( int fd[2]); 在创建子进之前,可以用pipe函数创建一个管道进行进程之间的交互。 pipe函数传入一个容量为2的数组,fd[1]只能写入,fd[0]只能读。案例#include <unistd.h> #include <signal.h> #include <fcntl.h>#include <sys/syslog.h>#include <sys/param.h> #include

2021-03-13 15:27:39 273

原创 linux多进程(信号量)(三)

信号量概念当多个进程对一个资源进行访问的时候,我们要对这几个进程进行控制。我们要考虑到他们的同步问题,就需要控制当某个进程占用资源的时候其他进程不能进行访问,信号量就被发明了。信号量只有两个操作:等待和信号,设有一信号量为SV,分别用P和V来代替两个操作。信号量的值是用二进制来表示,只有1和0,就是可执行和不可。如果当信号量的值为1时(可执行),如果此时A进入到P(SV)操作那么A就进入进行关键代码段,此时B再执行P(SV)的话就会被挂起直到A离开关键代码段才将B唤醒进入关键代码段,此时其他进

2021-03-13 15:27:26 226

原创 linux多进程gdb调试

代码#include <unistd.h> #include <signal.h> #include <fcntl.h>#include <sys/syslog.h>#include <sys/param.h> #include <sys/types.h> #include <sys/stat.h> #include <stdio.h>#include <stdlib.h>int

2021-03-13 15:27:12 147

原创 linux多进程(一)

进程的基本概念进程是LInux中管理事务的基本单元 代表资源的总合进程的属性进程号/*获得该进程进程号*/pid_t getpid();/*获得该进程的父进程号*/pid_t getppid();用linux命令来获取进程号ps -o <format>ps -o pidps -ef /*查看所以进程*/进程组:一个进程创建的所有子进程的集合是一个进程组用户号一个进程有两个用户号:UID和EUID,运行文件的那个用户是UID,文件拥有者的id是EUID有

2021-02-22 16:53:09 79

原创 sockaddr_ll和ifreq

(一)ifreq结构体ifreq结构体可以用来配置ip地址,MTU,网卡等一些设备信息。struct ifreq{#define IFHWADDRLEN 6 union { char ifrn_name[IFNAMSIZ]; //网卡名 } ifr_ifrn; union { struct sockaddr ifru_addr; //地址 struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr;

2021-02-19 17:05:21 1586

原创 icmp实现shell反弹

#概述1.创建原始套接字(icmp),分别为发送端和接收端,另外再起一个进程绑定一个端口进行tcp监听。2.发送端向接收端发送icmp包后,接收端过滤icmp包后获得发送端发出的icmp包再解包和解密,当口令正确,解析icmp_data段的ip和port。3.拿到ip和port后,创建一个tcp套接字去connect这个addr,连接成功后将stdin,stdout,stderr重定向到创建的套接字中,再execl反弹shell就完成了.源码发送端#include <stdio.h&gt

2021-02-01 14:21:03 270

原创 Linux 临时权限

* 设置文件权限

2021-01-28 19:44:32 265

原创 Linux aio异步

异步同步:执行一个操作之后,等待结果,然后才继续执行后续的操作。异步:执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作。阻塞:进程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。非阻塞:进程给CPU传达任我后,继续处理后续的操作,隔断时间再来询问之前的操作是否完成。这样的过程其实也叫轮询aioaiocb 结构体struct aiocb{ int aio_fildes; /* File desriptor. */ 文件描述符 in

2021-01-26 16:36:19 160

原创 Linux信号四(sigpending)

sigpending概念在程序当中用sigprocmask将一些信号被设置为进程信号掩码,进程无法接收到信号,这些信号会被加入到一个队列当中,我们可以用sigpending来访问这个对列。int sigpending(sigset_t *set);用set来接收这个信号集合demo#include<signal.h>#include<stdlib.h>#include<errno.h>#include<stdio.h>void sigse

2021-01-21 22:07:28 799

原创 Linux信号(三)(信号集合)

信号集合结构体//创建集合sigset_t set集合操作函数int sigemptyset(sigset_t *set);//清空集合int sigfillset(sigset_t *set);//将所有信号加入集合int sigmemberset(sigset_t *set, int signum);//判断是否存在信号signumint sigdelset(sigset *set,int signum);//删除信号 signumint sigaddset(sigset_t *s

2021-01-21 21:58:29 209

原创 Linux信号(四)

sigaction函数系统调用int sigaction(int sig,const struct *sigacton act,struct *oact);1.sig指的是信号值2.act 传入一个sigaction结构体3.oact 返回一个原来的sigactionsigaction给信号设置处理函数struct sigactionstruct sigaction { //普通信号处理函数 void (*sa_handler)(int); //三参数信

2021-01-21 21:54:30 78

原创 Linux信号(一)

信号概念程序在执行当中会发生各种事件,当发生事件的时候会给进程发出对应的信号。常用的信号#define SIGHUP 1#define SIGINT 2 程序结束信号#define SIGQUIT 3#define SIGILL 4#define SIGTRAP 5#define SIGABRT 6#define SIGIOT 6#define SIGBUS 7#define SIGFPE 8#define SIGKILL 9

2021-01-21 21:14:14 51

原创 Linux信号(二)

alarm和ualarmalarm和ualarm函数可以设置一定时间后向程序发送一个SIGAKLRM信号alarm(5);//当前时间开始5秒后向发送一个信号ualarm(5000,2000);//5秒之后发送第一个信号 间隔2秒发送一次 定时器//设置定时器int setitimer(int which,struct itimerval*cur_value);//获取定时器int gettimer(int which,const struct itimerval*new_value,st

2021-01-19 22:37:04 134

原创 C语言函数

函数格式函数的声明:返回值类型 函数名(参数);函数的定义:返回值类型 函数名(参数){ .....}函数的原型函数第一次声明或定义的时候,编译器会记住它的参数和返回值类型,当每一次调用通过原型来检查函数参数是否正确。参数机制1.C语言中参数的传递是拷贝的值称为形参,并不是实参,对形参进行操作不会改变实参的值,当传入一个数组名或指针时,拷贝一份指针,因为指针可以操作内存所以可以变实参的值。2.当不传入任何参数的时候就在括号中填void。返回值1.每

2021-01-10 10:18:49 1067

原创 linux io复用

fctnl套接字都是默认为阻塞,所以要用到函数fctnl来改变设定fctnl 函数用来设定套接字阻塞情况头文件#include<fctnl.h>fctnl(SOCKET,option,flag);1.SOCKET 为套接字描述符2.option 操作的标识符 通常有 F_SETFL F_GETFL3.flag 设定类型 O_NONBLOCK(非阻塞)#include<fctnl.h>/* .....*/int fl

2021-01-06 14:52:11 97

原创 C语言文件操作

C语言缓冲区缓冲的类型1.全缓冲 _IOFBUF2.行缓冲 _IOLBUF3.无缓冲 _IONBUF标准输入输出1.stdin 0 标准输入2.stdout 1 标准输入3.stder 2 标准错误清空缓冲区fllush(buf);buf表示缓冲区例如 stdin stdout设置缓冲区void setbuf(FILE*,char*,int );//文件指针 指定缓冲区 缓冲长度void setbuffer(FILE*,char*,int);//同上 全缓冲

2020-12-26 19:58:08 204

原创 linux/c socket编程

标题

2020-12-26 19:52:58 216 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除