原创 多線程 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