Linux使用KILL 0检测进程是否存在
之前遇到过kill( pid, 0 )
的情况,由于平常没注意到kill函数的形参为0的情况,不知道它的作用。后面用man 2 kill
命令查看了下kill函数的说明,发现可以用来检测进程的存在情况。
vsnprintf字符串格式化输出实例:日志中打印程序名和行号
在Linux C/C++程序中打印日志时,可能会由于需要打印未知个数的变量参数,那么vsnprintf
函数就排上用场了。这里使用一个简单的C程序例子,演示在打印源程序文件名和该打印函数所在的行号的同时,使用vsnprintf函数打印个数未知的参数变量。
Disqus支持的HTML标签和代码高亮方法
由于Disqus不支持Markdown的原因,所以在评论中使用HTML标签和代码高亮就不像Markdown那样方便了。在查看了Disqus官方关于HTML标签和代码高亮的说明后,发现Disqus只支持原生的HTML标签和代码高亮方式。
更新博客生成发布及同步GitHub的Shell脚本:解决文件名空格问题
前面一篇文章通过Linux Shell脚本的方式,实现博客生成发布及同步GitHub的的功能:先同步GitHub个人仓库中的Markdown文章到本地,然后通过Pelican编译生成静态HTML文件,最后发布到Nginx的web目录下面,同时更新到GitHub个人主页(vfhky.github.io)。
由于没仔细考虑到Markdown文件名中可能包含空格的问题,所以在Shell脚本的文件名遍历时(代码第108行)出现了BUG:Linux Shell默认把空格空格做为值与值之间的分隔符,所以原本一个带空格的文件名就被拆分成了几个文件名。
一个sigprocmask和sigsuspend函数的综合应用
在Linux服务端后台开发中,经常会用到信号处理函数:sigprocmask
和sigsuspend
。这篇文章主要通过一个综合实例演示如何使用sigprocmask函数屏蔽目标信号(信号掩码)以及sigsuspend函数挂起进程。
Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉
使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(二)
前文《使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(一)》通过TCPDUMP和Wireshark在利用CentOS7作为服务端、Windows10作为客户端,模拟演示了一个TCP通信的CLOSE_WAIT状态,这篇文章主要利用前文的数据尝试解释Linux服务端产生CLOSE_WAIT状态的原因。