原创 多線程 sleep usleep 阻塞問題
今天碰到一個問題,在多線程處理時,一個線程處理停止了,一開始以爲是死鎖了,但是過一段時間後,又正常運行了。又仔細看了下處理,才發現是usleep的問題。 sleep和usleep都是使用alarm的信號機制實現等待。入股多線程同時usle
原创 U盤安裝Linux啓動失敗問題(grub)
使用U盤安裝Linux系統時,當安裝所有的包後,點擊reboot重啓(重啓後還需要對系統進行時間,其他用戶等等的設定),發現啓動時進入了grub> 界面。原來是使用U盤進行Linux安裝時,默認啓動位置設在了U盤中。 因
原创 多線程編譯時_REENTRANT宏定義的必要性以及pthread和lpthread的區別
在Linux程序設計第4版 12.3章節中說到:在編寫多線程程序時,我們需要通過定義宏_REENTRANT來告訴編譯器我們需要可重入功能,而這個宏定義必須位於程序中的任何#include語句之前。進行該宏定義後,我們能夠以一種多線程
原创 Linux下防止程序重新啓動
有一些程序在同一服務器同一時間只能運行一個,因此這樣的程序應該需要一個排外的處理。當程序再次運行時,檢測到該程序已經運行了,那麼程序停止結束。 文件和記錄鎖(fcntl()和F_SETLK(設置記錄鎖))提供一種方法確保只有程
原创 Linux下查看和清空route cache
在Linux有時候爲了排除問題以及必要的信息,我們需要查看或者清空route cache。 在linux下,/proc/net/rt_cache文件存儲route cache信息,但是ip地址是使用十六進制來表示的,所以看起來很不方便。
原创 約瑟夫問題 C語言代碼
一、約瑟夫問題的由來 據說著名猶太歷史學家 Josephus有過以下的故事:在羅馬人佔領喬塔帕特後,39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧願死也不要被敵人抓到,於是決定了一個自殺方式
原创 判斷單鏈表中是否有環,計算出環的首地址 C語言實現
判斷單鏈表中是否有環,如果有,得出進入環時首個節點的地址. 有環的定義是,鏈表的尾節點指向了鏈表中的某個節點。 如: ____________ ↓
原创 防止進程重新啓動-keepalived源碼解析
在上面一篇文章中,寫了一種防止進程重新啓動的方式:文件盒記錄鎖(fcntl()和F_SETLK(設置記錄所)) 在解析keepalived源碼時,見到一種防止進程重啓的方式,現在整理處理進行分享。 在keepalived的處理
原创 syslog函數處理-keepalived源碼解析
在keepalived日誌處理中,使用syslog來進程日誌的存儲。在keepalived的處理中新規函數如下所示: 頭文件:lib/logger.h 函數形式:void log_message(int priority, char* f
原创 sscanf的用法
#include<stdio.h> 定義函數 int sscanf (const char *str,const char * format,........); 函數說明 sscanf()會將參數str的字符串根據參數fo
原创 漢諾塔模擬_C語言源代碼(遞歸和棧)
一、什麼是漢諾塔。 漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在
原创 源代碼安裝glusterFS(gf-error-codes.h missing)問題巧解
在ubuntu系統下安裝armhf版本的glusterfs,因爲沒有找到對應的deb的包,只好使用代碼進行安裝了,在代碼安裝glusterfs過程中遇到一個很糾結的問題,現把問題整理出來希望對遇到這個問題的筒子們有所幫助。 一、gl