一周思进

每周学习总结,相信可以走的更远.

UNIX编程-获取当前进程执行路径

问题场景:获取当前进程的执行路径 方式一 直接通过 getcwd 接口获取,代码如下: #a.out 代码 int main(int argc, char const *argv[]) { char buf[PATH_MAX] = {0}; (void)getcwd(buf, sizeof(buf)); printf("buf:%s\n", buf); ...

UNIX编程-进程环境变量

问题场景:主进程集成某个第三方库,该库需要读取本地的一个文件,文件路径通过环境变量读取,且主进程是通过脚本执行起来的,那这个环境变量该如何设置呢? 如下两种设置方式都可以在进程中获取到环境变量值 1、在未执行脚本前,在当前 shell 环境下设置好环境变量,然后再执行脚本启动进程。 2、在脚本中启动进程前设置好环境变量 这样能够生效的原因是新进程在创建之时,会继承其父进程的环境副本。 ...

openssl-SNI扩展

阅读文章: https://en.wikipedia.org/wiki/Server_Name_Indication 通过文章了解了下 openssl SNI 的用途。 为了节省服务器硬件成本,通过虚拟主机技术可以让用户在一台服务器同时运行多个网站。HTTP 协议访问可以通过 hostname 字段来区分是要访问哪个服务。但为了访问安全性,会考虑所有提供的服务都支持 HTTPS 访问,这就...

Linux命令-objdump

objdump 命令偶尔会用到下,下面记录一些个人觉得常用的选项说明。 1、查看可执行程序依赖的动态库 objdump -x lib.so | grep NEEDED -p 也可以 -x 选项会显示所有可用的头信息,其效果类似加选项 -a、-f、-h、-p、-r、-t。 2、查看符号表信息 objdump -t test.o 可以看到想必之前的 nm 命令,objd...

wireshark网络分析笔记

以前做的笔记,翻出来再温习下。 本文是阅读《wireshark网络分析就这么简单》和《wireshark网络分析的艺术》做的一些笔记。 技巧篇 1、如只要分析ip头或tcp头,可减少每个抓包数据的大小,通过设置limit each packet to的值即可(capture->options->双击抓包网卡) 2、设置包的颜色 view —> Coloring Rul...

Linux命令-nm

nm 命令可以用来帮助了解一个变量、函数是在代码段、数据段,还是未初始化数据段等等。下面以如下示例代码来查看 // main.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "test.h" int g_var1; int g_var2 = 1; static...

doxygen自动生成代码注释文档

日常开发除了编写优良的代码,同样需要写好可读的注释。但对于开发人员而言,要写好注释,也是一件挺繁琐的事,尤其是那类注释基本都是固定的格式,如源文件开头部分的声明,还有函数声明等。 而 doxygen 工具正好可以帮助生成固定的注释模板,可以少敲很多内容,极大的提高开发人员写注释的效率,下面以 vscode 为例进行安装使用说明。 一、vscode 安装 doxygen 插件 直接在插件...

网络编程-TIMEOUT属性设置

之前对于通信两端如果发生长时间无数据通信的情况,可以通过设置 keepalive 机制来识别网络是否异常,如果网络异常,则主动关闭连接,可以看网络编程-keepalive一文。 不过在网络编程-断网重传中提到,如果是一方发送数据,但收不到对方应答,则断网重传一般过程就需要消耗15分钟的时间。而在明确收不到对方应答的情况下,你可能也不希望等如此之久,比如你可能希望20s没收到对方应答就关闭连...

网络编程-局域网IP扫描

如果想知道当前局域网有多少设备,则可以通过 arp 来实现。对于 arp 的作用,可以看下之前写的网络工具-arp作用。 首先同一局域网下的设备,一定是划分的同一子网,则最多有多少个主机是可以确定。具体方法如下: 1、获取本机 IP 及子网掩码 2、根据上述信息确认需要扫描的主机IP 3、通过 arp 查询需要扫描的 IP,如得到应答就记录下来 对于本机 IP 及子网掩码的获取,可以看 ...

网络编程-获取本机IP及MAC的几种方式

一、通过 gethostbyname 获取本机IP(支持IPV4和IPV6,但已不推荐) 具体代码如下: int get_local_ip(void) { char hostname[64] = {0}; struct hostent *p_host_entry = NULL; int ret = -1; int i = 0; char str_ip...