
Linux程序设计
文章平均质量分 58
xuzhouweihao
这个作者很懒,什么都没留下…
展开
-
守护进程的创建-keepalived源码解析
在keepalived处理中,包含三个进程,原创 2014-11-09 18:38:03 · 1932 阅读 · 0 评论 -
防止进程重新启动-keepalived源码解析
在上面一篇文章中,写了一种防止进程重新启动的方式:文件和记录锁(fcntl()和F_SETLK(设置记录锁))提供一种方法确保只有程序只被正在运行一次。原创 2014-11-09 20:08:49 · 1436 阅读 · 0 评论 -
syslog函数处理-keepalived源码解析
在keepalived日志处理中,使用syslog来进程日志的存储。原创 2014-11-09 20:17:20 · 1073 阅读 · 0 评论 -
Linux下防止程序重新启动
有一些程序在同一服务器同一时间只能运行一个,因此这样的程序应该需要一个排外的处理。当程序再次运行时,检测到该程序已经运行了,那么程序停止结束。 文件和记录锁(fcntl()和F_SETLK(设置记录锁))提供一种方法确保只有程序只被正在运行一次。如果每一个程序对一个固定的文件进行加锁(写,只有这个锁)。连续对该文件追加记录锁会失败,也意味着该程序正在被运行。这个记录锁是互斥的,如果一个程序翻译 2014-10-24 20:49:43 · 1559 阅读 · 0 评论 -
errno多线程安全问题
在学习Linux程序设计时,看到了这么一句话:最初的UNIX和POSIX库中,在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。如果是这样的话,当在一个线程中准备获取刚才的错误码时,该变量很容易被另外一个线程中的函数调用改变。然后特意去查了下资料,总结了一下Linux下errno的资料,希望对你有所帮助。如果有什么错误问题请多多包涵并留言,一起学习进步。 首先,我们查原创 2014-10-19 23:22:23 · 3637 阅读 · 0 评论 -
多线程编译时_REENTRANT宏定义的必要性以及pthread和lpthread的区别
在Linux程序设计第4版 12.3章节中说到:在编写多线程程序时,我们需要通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,而这个宏定义必须位于程序中的任何#include语句之前。进行该宏定义后,我们能够以一种多线程安全的方式来访问一些函数或者一些值(如:stdio.h中的一些以宏形式实现的函数,errno.h中的变量errno)。 但是, 该_REENTRANT宏是必须的原创 2014-10-19 23:31:11 · 1907 阅读 · 0 评论 -
多线程 sleep usleep 阻塞问题
今天碰到一个问题,在多线程处理时,一个线程处理停止了,一开始以为是死锁了,但是过一段时间后,又正常运行了。又仔细看了下处理,才发现是usleep的问题。sleep和usleep都是使用alarm的信号机制实现等待。入股多线程同时usleep或者sleep时,就有可能造成程序阻塞。如果需要进行线程等待的话,使用nanosleep或者select来代替。select实现等待方式如下原创 2014-12-10 20:37:27 · 9043 阅读 · 4 评论 -
使用动态库生成静态库
有一些程序我们需要依赖一些开元的库,但是有时候为了需求需要对这些库对应的源码进行修改。那么就需要我们在编译了修改后的源码后,由编译出的动态库生成我们需要的静态库。那么怎么由动态库生成动态库?我们可以借用ar命令。如对mysql源码修改后,编译后,生成对应的libmysqlpp.a静态库 ar -rus libmysqlpp.a `find . -name"mysqlpp*.o"`原创 2014-12-10 20:50:24 · 1838 阅读 · 0 评论