- 博客(35)
- 资源 (18)
- 收藏
- 关注
原创 #、##、__VA_ARGS__和##__VA_ARGS__的作用
一、#用来把参数转换成字符串例子一: #define P(A) printf("%s:%d\n",#A,A);二、##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号,为宏扩展提供了一种连接实际变元的手段 例子一:#define XNAME(n) x ## n 如果这样使用宏:XNAME(8)则会被展开成这样:x8 ##就是个粘合剂,将前后两部分粘合起来,也就是有“字符化”的意思。但是“##”不能随意粘合任意字符,必须是合法的C语言标示符。在单一的宏定义中,最
2022-07-04 15:31:20
200
转载 apache内存池实现
https://www.cnblogs.com/bangerlee/archive/2011/09/01/2161437.html
2021-05-27 14:04:24
141
转载 socket中,调用close会发生什么
转载:https://www.cnblogs.com/kkshaq/p/4456453.html1、server端close之后,client端write,导致server端发送RST(服务器关闭套接字):对方已经关闭或者异常终止,但是client端,不知道,这个成为半打开当server端close套接字的时候,假设此时server端的接受缓冲区没有数据了。则close发送的是FIN分节,client端如果收到FIN之后,调用read函数,是返回0的,因为FIN的接收,表明client端以后再.
2021-03-15 17:17:00
3436
原创 shell脚本中for、while用法
1、for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止。for的语法结构如下:for 变量 in 串行do 执行命令done例1:用for循环在家目录下创建a1-a10,然后在a1-a10创建b1-b10的目录#!/bin/bashfor a in {1..10}do mkdir /datas/a$a cd /datas/...
2020-08-19 09:40:46
346
原创 coredump文件重定向、以及设置coredump压缩的方法
1、设置coredump重定向ulimit -c unlimitedecho "/mnt/core-%e-%p-%t" > /proc/sys/kernel/core_pattern2、设置core文件压缩的方法exec gzip - > /mnt/core-$1-$2-$3.gz$1表示第一个参数;$2表示第二个参数;$3表示第三个参数;...
2020-07-29 11:04:38
1083
原创 c语言位域总结
有时我们存储信息时并不需要用到一个完整的字节,而只需要几个二进制位。C语言提供了一种数据结构,称为位域(位段)用于这种情况。定义:struct name{ 类型名 位域名:位域长度; // 位域长度不能大于8(即一个字节) };注意:一个位域必须存储在同一个字节中,当有两个连续的位域,在一个字节中存放第一个位域后剩下的空间不足以存放第二个位域,则第二个位域将存放在一个新的字节中,前一个字节多余的未补0struct bits{ int a:4; // 第一个字节
2020-07-07 16:40:34
853
转载 sprintf与snprintf区别
sprintf的原型如下int sprintf(char *str, const char &format, ...);sprintf是字符串格式化命令,主要功能是把格式化的数据写入字符串str中,返回值为写入str的字节数,结束字符‘\0’不计入内。其中,str是指要写入的缓冲区,format控制要写入str中数据的格式,例如%s、%d、%x等。snprintf的原型:int snprintf(char *str, size_t size, const char *fo...
2020-06-22 19:18:11
264
1
转载 socket编程中write、read和send、recv之间的区别
一旦,我们建立好了tcp连接之后,我们就可以把得到的fd当作文件描述符来使用。由此网络程序里最基本的函数就是read和write函数了。ssize_twrite(int fd, const void*buf,size_t nbytes);write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,当我们向套接字文件描述符写时有两可能.1)write的返回值大于0,表示写了部分或者是全部的数据. 这样我们用一个whil.
2020-06-19 14:23:16
408
转载 /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的作用
转载自:http://blog.csdn.net/u013968345/article/details/21262033/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信...
2020-06-09 19:43:13
308
转载 Linux进程环境表相关知识
Linux进程环境表1.环境表 每个进程都有一个环境表,存储当前进程的环境变量。每个环境变量由“name=value”这样的字符串组成。环境表的内存布局: 2.环境表的操作函数 char * getenv(const char *name); 该函数用来获取名字为name的环境变量值,不存在时返回NULL。 int putenv(const char * string); 该函数用来改变或增加环境变量的内容。参数string的格式为“name=valu..
2020-06-06 11:26:44
276
原创 快速排序
1.3、快速排序1、快速排序为什么比冒泡排序速度快?如何选取快速排序的哨兵?怎么样选效率会更高?快速排序有三个重要的值,两个坐标date[i],date[j],一个哨兵。和哨兵比较,比哨兵小的放在哨兵前面,比哨兵大的放在哨兵后面;在比哨兵大的集合里面,再找一个哨兵;在比哨兵小的集合里面,再找一个哨兵。这就是一种递归思想找到23,这个23就是需要找的第一...
2020-05-05 14:19:41
443
转载 json学习以及C语言的json库使用
json学习以及C语言的json库使用https://www.cnblogs.com/liunianshiwei/p/6087596.html
2020-04-27 18:14:08
165
原创 socket阻塞与非阻塞情况下的recv、send、read、write返回值
recv:阻塞与非阻塞recv返回值没有区分,都是<0:出错,=0:连接关闭,>0接收到数据大小,特别:非阻塞模式下返回 值<0时并且(errno==EINTR||errno==EWOULDBLOCK||errno==EAGAIN)的情况 下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会...
2020-04-15 15:31:34
1268
原创 Linux下的五种IO模型总结
Linux下的五种IO模型总结常见的5种模型主要有:阻塞式I/O非阻塞式I/OI/O复用(select,poll,epoll等)信号驱动式I/O(SIGIO)异步I/O(POSIX的aio_系列函数)在介绍这5种模型之前,先要理解同步、异步、阻塞、非阻塞的概念。同步、异步是个操作方式,阻塞非阻塞是线程的一种状态。所谓同步就是一个任务的完成需要依赖另外一个任...
2020-02-11 17:13:46
265
原创 makefile总结1
gnu make工具的Makefile中$(SRC:%.c=%.o)的含义:将SRC变量中所有以.c结尾的文件名替换成对应的以.o结尾的文件名,然后赋回给SRC
2020-01-10 10:11:06
175
原创 linux中关于/proc下面的相关内容介绍
这篇文章写一下以前整理的查看系统资源、性能的一些命令。本来那时就想系统地整理的,但事多人懒没去做,现在就简单写写。查看CPU:# cat /proc/cpuinfo该命令可以查看系统CPU有多少个核,频率,特性等等。查看cpu内核频率# cat /proc/cpuinfo |grep MHz|uniqcpu MHz : 27518.499查看内存:#cat /proc/memi...
2019-09-12 17:35:38
262
转载 stderr和stdout区别
stdout是默认向到屏幕,但是可以将标准输出重定向到磁盘文件有区别。stdout -- 标准输出设备 (printf("..")) 同 stdout。stderr -- 标准错误输出设备两者默认向屏幕输出。但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。今天又查了一下fprintf,其中对第一个参数stderr特别感...
2019-08-04 23:22:43
496
转载 errno和strerror用法
1.errno头文件:include<errno.h> errno用于Linux下的错误捕获,在运行creat(),open(),write()之类的函数时有些时候会调用失败返回-1,这时候若在程序中include<errno.h>这个头文件,每次发生错误时,系统会自动用错误代码填充errno这个全局变量。这对于调试程序有很大帮助。errno的错误...
2019-08-04 23:22:12
449
转载 typedef 结构的问题
在使用typedef时,会遇到的一个小问题当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明:typedef struct tagNode{ char *pItem; pNode pNext;} *pNode;答案与分析:1、typedef的最简单使用typedef long byt...
2019-08-04 23:21:07
128
原创 printf、fprintf、sprintf用法和却别;
1: fprintf()#include <stdio.h>int fprintf( FILE *stream, const char *format, ... );fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.比如char name[20] = "Mary";...
2019-08-04 14:16:55
83
原创 WinSCP无法用root用户登陆linux服务器
1.编辑 /etc/ssh/sshd_config文件: sudo vi /etc/ssh/sshd_config将PermitRootLogin 的值改成 yes将PermitEmptyPassword 的值改成 no保存退出 2.重启ssh:sudo service ssh restart3.即可在WinSCP用root用户登陆...
2019-04-07 22:01:26
811
原创 H264DPB的总结
贴一篇关于DPB介绍的文章,很详细https://wenku.baidu.com/view/63fab483e53a580216fcfeef.html一般的H264 码流以 2个参考帧居多,从mediainfo 中可以看到: Format setting : ReFrames : 2frames。个人理解这个参数是指一个GOP中参考帧的个数,比如说,是否是P帧只参考前面的I 帧与相邻...
2019-03-05 19:32:04
1614
原创 通过Makefile传参数到代码中
在makefile中添加CFLAGS += -DXXX 程序代码中的条件编译 #ifdef XXX printf("XXX is define!\n"); #endifXXX就可以实现传递到代码中
2018-10-19 19:09:45
2067
原创 C语言中sizeof和strlen的区别
1、sizeof和strlen的区别sizeof是返回变量所占的内存大小,以字节为单位,strlen是计算字符串长度,以‘\0’作为结束符。举例:char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配...
2018-04-09 17:30:33
237
转载 ubuntu下的快捷键
1、快捷键方式ctrl + alt + T 当前目录为 /home/<用户名>2、鼠标右键打开在终端窗口中执行以下命令: sudo apt-get install nautilus-open-terminal sudo reboot 重启后在你想要打开Terminal的目录单击鼠标右键,选择Open in Termainal3、在同一个窗口打开多个终端当你已经打开一个...
2018-03-08 10:48:34
405
原创 C语言中fopen和fwrite函数
fopen()函数:1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针。2.函数原型:mode有以下几种方式:打开方式说明r以只读方式打开文件,该文件必须存在。r+以读/写方式打开文件,该文件必须存在。rb+以读/写方式打开一个二进制文件,只允许读/写数据。rt+以读/写方式打开一个文本文件,允许读和写。w打开只写文件,若文件存在则长度清为0,即该文件内容消失,若...
2018-03-06 16:01:31
2219
2
原创 C语言中r和rb读写文件的区别
"r" 为读而打开文本文件"rb" 为读而打开二进制文件 一般使用方式如下:12FILE *fp; // 定义一个<a href="https://www.baidu.com/s?wd=%E6%96%87%E4%BB%B6%E6%8C%87%E9%92%88&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y...
2018-03-06 15:55:43
8171
转载 Linux中关于 -- Bootloader , Uboot的作用,和整个linux系统的启动过程分析
1. Bootloader作用PC机中的引导加载程序由BIOS(其本质是一段固件程序)和GRUB或LILO一起组成。BIOS在完成硬件检测和资源分配后,将硬盘中的引导程序读到系统内存中然后将控制权交给引导程序。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口点去运行,即启动操作系统。简单地说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬...
2018-03-02 18:21:20
613
原创 C语言中i=i+1和i+=1的本质和区别
两种的写法都是是i加1,但是前者计算出右值后会存入一个临时变量然后赋给左侧的 i, 而后者是在 i 本身上做计算, 所以效率会有一点点提升
2018-01-27 14:59:57
14076
1
转载 C语言中关于break和continue的使用说明
使用c语言也有一段时间了,关于break和continue的使用一直都不清楚。但是再阅读别人的代码的时候,关于break和continue的意思总是模棱两可。看都这样,谈何写!?借这个机会,在这里把break和continue的用法做个明朗点的总结,以资以后使用。一、1.break语句通常用在循环语句和开关语句中。当break语句用于开关语句switch中时,可使程序跳出switc
2018-01-27 14:09:06
548
winscp514.rar,便捷的windows和linux之间文件传输工具,使用简单
2018-05-30
解析Quartus II编译错误Can't place multiple pins assigned
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人