• 手机版
  • 热门标签
  • 站点地图
  • 我要投稿
  • 广告合作
  • 联系我们
编程之家
AI导航网
  • 广告位招租
  • 广告位招租
  • 首页
  • 编程教程
  • 编程导航
  • 编程百科
  • 编程问答
  • 编程博文
  • 编程实例
  • 硬件设备
  • 网络运营
  • 软件教程
  • 移动数码
  • 办公软件
  • 人工智能
  • ▸ PHP
  • ▸ Java
  • ▸ Java SE
  • ▸ Python
  • ▸ NumPy
  • ▸ C#
  • ▸ C&C++
  • ▸ Ruby
  • ▸ VB
  • ▸ asp.Net
  • ▸ Go
  • ▸ Perl
  • ▸ netty
  • ▸ gRPC
  • ▸ Django
  • ▸ Delphi
  • ▸ Jsp
  • ▸ .NET Core
  • ▸ Spring
  • ▸ Flask
  • ▸ Springboot
  • ▸ SpringMVC
  • ▸ Spring Cloud
  • ▸ Lua
  • ▸ fastadmin
  • ▸ Laravel
  • ▸ Mybatis
  • ▸ Asp
  • ▸ Groovy
  • ▸ ThinkPHP
  • ▸ Yii
  • ▸ swoole
微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!
  • 编程之家
  • C&C++
C/C++日志写入系统log/var/log/syslog
【代码】C/C++日志写入系统log(/var/log/syslog)
作者:墨痕诉清风 时间:2022-10-29
C/C++ select fd_set解释
win下面FD_SET就是检查SOCKET在数组中是否存在,如果不存在,那么就插入到数组最后。而FD_CLR(fd, set)是把fd后面的东西往前拷贝,然后计数减1.FD_ZERO仅仅是把计数置为0(这个要注意!很明了,一个计数的fd_count,另一个就是SOCKET数组。其中,FD_SETSIZE是64.(具体可以去查看vs的代码)根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。select()机制中提供一fd_set的。
作者:墨痕诉清风 时间:2022-10-29
linux c 获取进程 可执行文件路径
查看 指定进程10010的 可执行文件路径。
作者:墨痕诉清风 时间:2022-10-29
C/C++劫持技术函数劫持、dll注入、动态库注入、HOOK
(1) 定义一个函数指针指向目标函数,这里目标函数是system例如:detour在realse模式生效(因为VS在Debug模式下已经把程序中的函数劫持了)//定义一个函数指针指向目标函数(2) 定义与目标函数原型相同的函数替代目标函数//3.定义新的函数替代目标函数,需要与目标函数的原型相同int result = MessageBoxA(0,"是否允许该程序调用system命令","提示",1);{//调用旧的函数}else{
作者:墨痕诉清风 时间:2022-10-29
C/C++ malloc()和calloc()有啥区别
sizeOfElement)有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。malloc函数:不能初始化所分配的内存空间,在动态分配完内存后,里边答数据是随机的垃圾数据。calloc函数:能初始化所分配的内存空间,在动态分配完内存后,自动初始化该内存空间为零。size)函数有一个参数,即要度分配的内存空间的大小。malloc函数:函数返回值是一个对象。calloc函数:函数返回值是一个数组。malloc函数:malloc(calloc函数:calloc(
作者:墨痕诉清风 时间:2022-10-29
ip地址互转十进制数字函数
切记:得到的十进制数与 inet_addr(127.0.0.1) 函数得到的数据不一样,原因 inet_addr 函数得到的16进制做了大小端导致。
作者:墨痕诉清风 时间:2022-10-29
C/C++创建tty,创建终端
【代码】C/C++创建tty,创建终端。
作者:墨痕诉清风 时间:2022-10-29
C/C++取绝对值实例
输出结果:k1=1.00,k3=2.03。
作者:墨痕诉清风 时间:2022-10-29
C/C++的#define DEBUG 用法
【代码】C/C++的#define DEBUG 用法。
作者:墨痕诉清风 时间:2022-10-29
C/C++函数指针与回调函数总结函数指针数组
函数有它的地址,程序运行起来了,程序里肯定有地方要放这个函数。我们知道可以用printf %p来输出一个变量的地址,数组的地址,同样我们定义了一个函数后,用这个函数的名字做输出,就可以得到这个函数的地址。那么我们得到一个函数的地址,有什么用呢? 我们可以想一下,在程序里我们定义一个变量i,然后定义一个指针p,让指针p指向i得到i的地址,然后通过*p我们就可以对i...
作者:墨痕诉清风 时间:2022-10-29
C/C++ realloc()函数解析
2)如果当前内存段后面的空闲字节不够,那么就使用堆中的第一个能够满足这一要求的内存块,将目前的数据复制到新的位置,并将原来的数据块释放掉,返回新的内存块位置。realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。真是有点惭愧,这些内容本应该很早就掌握的,以前只是糊里糊涂的用,不知道在内存中具体是怎么回事,现在才弄清楚。1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。
作者:墨痕诉清风 时间:2022-10-29
C/C++ 线程三种并发方式比较传统互斥量加锁方式, no lock不加锁的方式, 原子函数方式
如果在单核系统中,由于在上述三条指令的任何一条执行完后都可能发生任务切换,比如执行完第1条指令后就发生了任务切换,这时如果有其他任务来对a进行操作的话,当任务切换回来后,将继续对a进行操作,很可能出现不可预测的结果,因此上述三条指令必须使用锁来保护,以使这段时间内其他任务无法对a进行操作。使用lock前缀的指令实际上在系统中是使用了内存栅障(memory barrier),当原子操作在进行时,其他任务都不能对内存操作,会影响其他任务的执行。由于时序的因素,多个线程操作同一个全局变量,会出现问题。
作者:墨痕诉清风 时间:2022-10-29
C/C++ getopt()函数的介绍及使用
对于这个过程会调用三次getopt()函数,和第一个输入一样,是找到选项-b和他的参数"qing er",这时optind的值为3,也就意味着,下一次的getopt()要从argv[3]开始搜索,所以第二次调用getopt()函数,找到选项-c和他的参数1234(选项和参数是连在一起的),由于-c1234写在一起,所以他两占一起占用argv[3],所以下次搜索从argv[4]开始,而argv[4]为空,这样第三次调用getopt()函数就会返回-1,循环随之结束。这就要涉及到main函数的那两个参数了,
作者:墨痕诉清风 时间:2022-10-29
C/C++端口复用SO_REUSEADDRsetsockopt参数
端口复用允许在一个应用程序可以把 n 个套接字绑在一个端口上而不出错。端口复用允许在一个应用程序可以把 n 个套接字绑在一个端口上而不出错。但每个实例绑定的IP地址是不能相同的。1、当有一个有相同本地地址和端口的socket1处于TIME_WAIT状态时,而你启动的程序的socket2要占用该地址和端口,你的程序就要用到该选项。3、SO_REUSEADDR允许单个进程绑定相同的端口到多个socket上,但每个socket绑定的ip地址不同。4、SO_REUSEADDR允许完全相同的地址和端口的重复绑定。
作者:墨痕诉清风 时间:2022-10-29
C/C++fflushstdout循环打印输出避免缓存区错误
在使用多个输出函数连续进行多次输出时,有可能发现输出错误。因为下一个数据再上一个数据还没输出完毕,还在输出缓冲区中时,下一个printf就把另一个数据加入输出缓冲区,结果冲掉了原来的数据,出现输出错误。 在 printf();后加上fflush(stdout); 强制马上输出,避免错误。实例//线程函数(1秒输出现记录的信息)static void *stats_thread(void...
作者:墨痕诉清风 时间:2022-10-29
C/C++获取当前路径、获取任意pid完整路径readlink函数
【代码】C/C++获取当前路径、获取任意pid完整路径(readlink函数)
作者:墨痕诉清风 时间:2022-10-29
C/C++vsnprintf用法要配合va_list使用
返回值:执行成功,返回最终生成字符串的长度,若生成字符串的长度大于size,则将字符串的前size个字符复制到str,同时将原串的长度返回(不包含终止符);const char *format [in], 指定输出格式的字符串,它决定了你需要提供的可变参数的类型、个数和顺序。用法类似于vsprintf,不过加了size的限制,防止了内存溢出(size为str所指的存储空间的大小)。va_list ap [in], va_list变量. va:variable-argument:可变参数。
作者:墨痕诉清风 时间:2022-10-29
C/C++ gdb的使用
用于展示gdb的调试功能,主要包括断点设置,单步执行,汇编代码显示等功能。2. (gdb) break 1: 设置断点,在源程序第1行处。6. (gdb) p i: 打印变量i的值,print命令简写。9. (gdb) c: 继续运行程序,continue命令简写。3. (gdb) info break: 查看断点信息。5. (gdb) n: 单条语句执行,next命令简写。4. (gdb) r: 运行程序,run命令简写。7. (gdb)bt: 查看函数堆栈。10. (gdb) q: 退出gdb。
作者:墨痕诉清风 时间:2022-10-29
C/C++unlink函数的使用
unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。注意:执行unlink()函数并不一定会真正的删除文件,它先会检查文件系统中此文件的连接数是否为1,如果不是1说明此文件还有其他链接对象,因此只对此文件的连接数进行减1操作。若连接数为1,并且在此时没有任何进程打开该文件,此内容才会真正地被删除掉。在有进程打开此文件的情况下,则暂时不会删除,直到所有打开该文件的进程都结束时文件就会被删除。返回值:成功返回0,失败返回 -1。
作者:墨痕诉清风 时间:2022-10-29
CLion远程调试
mingw远程环境:https://www.cnblogs.com/qiumingcheng/p/11185073.html(参考)mingw基础环境:https://www.cnblogs.com/future-dream/p/9510015.html(参考)环境准备假设本地开发环境是 Windows 操作系统,程序远程执行环境是 CentOS 操作系统。为满足远程调试,需要在...
作者:墨痕诉清风 时间:2022-10-29
linux系统调用sysconf获取系统信息
当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程。linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数。man一下sysconf,解释这个函数用来获取系统执行的配置信息。例如页大小、最大页数、cpu个数、打开句柄的最大个数等等。当前在线(可用)的处理器数量为 :1。可用页面的数量: 17336。最大打开的文件数: 1024。登录名的最大长度: 256。配置的处理器数量为 :1。主机名的最大长度: 64。
作者:墨痕诉清风 时间:2022-10-29
C/C++语言函数参数里的“...”作用,va_list的使用stdarg.h
可变参数的实现方式:C语言头文件“stdarg.h”提供了一个数据类型va_list和三个带参数的宏(va_start,va_arg和va_end)。va_start使得va_list类型的vp指向第一个可选参数,va_arg返回参数列表的当前参数并使vp指向参数列表的下一个参数,va_end把vp指针清为NULL。函数sum的功能是求前n个可变参数的和,所以对于函数调用“sum(4,3,2,3,4,5,6)”返回值应该为前4个可变参数的和,即为2+3+4+5=14。输出结果: j=14。
作者:墨痕诉清风 时间:2022-10-29
C/C++glob函数遍历文件夹所有文件
#include <glob.h>#include <stdio.h>int main(){ glob_t pglob; int i; if (glob("abc/testdir.*", GLOB_ERR, NULL, &pglob) != 0) { printf("Failed to load from ...
作者:墨痕诉清风 时间:2022-10-29
C/C++从路径得到目录名文件名
【代码】C/C++从路径得到目录名文件名。
作者:墨痕诉清风 时间:2022-10-29
C/C++socket send函数MSG_NOSIGNAL
【代码】C/C++socket send函数MSG_NOSIGNAL。
作者:墨痕诉清风 时间:2022-10-29
C/C++中volatile关键字的作用
C语言书籍这样定义volatile关键字:volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。(简洁的说就是:volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错)可以的,例如只读的状态寄存器。由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。
作者:墨痕诉清风 时间:2022-10-29
C/C++的ide编译器CLion的安装及快捷键使用
下载首先去Jetbrains官网下载CLionhttps://www.jetbrains.com/clion/download/我下载的是2019.2版本,主要是为了授权授权修改hosts文件:C:windowssystem32driversetc添加两行内容在最后0.0.0.0 account.jetbrains.com0.0.0.0 www.jetb...
作者:墨痕诉清风 时间:2022-10-29
C/C++中从文件末尾反向读取N行文件记录末尾读取文件
最近在实际的开发项目遇到了一个问题,有个24小时在跑的Linux程序,会不断有日志输出,写到一个指定的日志文件中。但是,日志只提供了输出的功能,并没有读取日志文件的功能。如果给程序员自己看日志是很简单的,只需要用tail 或 vi 即可。但是现在有个需求,需要在程序的界面上显示日志文件的内容,而且是最近的100行记录。在网上搜索了一遍,总结一下:1:从文件头开始,先用getline函数获取每一...
作者:墨痕诉清风 时间:2022-10-29
C/C++htonl(), ntohl(), ntohs(),htons()
如 Intelx86结构下,short型数0x1234表示为34 12, int型数0x12345678表示为78 56 34 12如IBM power PC结构下,short型数0x1234表示为12 34, int型数0x12345678表示为12 34 56 78。在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。得到的结果是4096,初一看感觉很怪。
作者:墨痕诉清风 时间:2022-10-29
C/C++ Exit Codes错误码
【代码】C/C++ Exit Codes(错误码)
作者:墨痕诉清风 时间:2022-10-29
上一页1819202122232425下一页
    • 友情链接:
    • 编程之家
    • -
    • 我要投稿
    • -
    • 广告合作
    • -
    • 联系我们
    • -
    • 免责声明
    • -
    • 网站地图
    版权所有 © 2018编程之家闽ICP备13020303号-8
    微信公众号搜索 “ 程序精选 ” ,选择关注!
    微信公众号搜"智元新知"关注
    微信扫一扫可直接关注哦!