原创 TCP併發服務器設計
TCP併發服務器是通過創建子進程來處理不同客戶端的請求實現的 server.c /* ** TCP併發服務器 */ #include <stdlib.h> #include <stdio.h> #include <errno.h
原创 linux shell獲取路徑的文件名及其目錄名
完整的文件名最長可以到達4096個字符。 那麼,怎麼知道哪個是文件名?哪個是目錄名?就是利用斜線(/)來分辨。 其實,獲取文件名或者是目錄名,一般的用途是在寫程序時進行判斷。 下面我們簡單以幾個範例談一談basename與dirname
原创 Bootloader的概念
簡單地說,bootloader就是在操作系統運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備,從而將系統的軟硬件環境帶到一個合適的狀態,以便於最終調用操作系統做好準備。 Bootloader的啓動流程,一般分爲兩個階段: S
原创 linux shell和c程序之間互相傳遞數據
有時候可能需要C程序和shell腳本之間互相傳遞數據,下面實現了兩者之間數據的傳遞操作。 用popen實現了shell的輸出參數想C程序的傳遞。 int getcount() { FILE *fp; int total=0; ch
原创 Linux下 C語言實現遍歷指定目錄下指定格式的文件
/* **path爲指定的目錄路徑,遍歷該目錄下的文件,找出指定格式(.mp3)的文件 **並將文件名分組分別寫入.txt文件,方便多進程處理 */ #define SINGLENUM 10 int searchdir( char *p
原创 C語言中的volatile關鍵字
C語言中的volatile是什麼意思? volatile可以翻譯爲:易變的 如: u8 a,b;{ a=2; b=a;}這時編器會把它改成:u8 a,b;{ a=2; b=2;}當運行到中間位置,中斷把a改了,結果就是錯的
原创 bss,data,text,rodata,堆,棧,常量段
//紅色部分爲問題部分 section 結構 SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr
原创 基於TCP的socket編程設計
server端需要做的工作(使用系統調用函數): (1)創建一個socket; 用socket() (2)綁定IP地址、端口等信息到socket上;
原创 網絡編程基礎
TCP和UDP是傳輸層協議。 TCP是保證傳輸的面向連接的協議。 UDP是無連接協議,不能保證消息傳送到目的地。 當服務器和應用程序需要和其他進程通信是就會創建套接口(socket)。 通信域(domain)用來說明socket通
原创 UBOOT啓動流程分析
UBOOT特點: 用於多種CPU 用於多種操作系統 查看一下board/smdk2410/u-boot.lds這個鏈接腳本,可以知道目標程序的各部分鏈接順序 OUTPUT_FORMAT("elf32-littlearm","elf
原创 Linux 進程創建及多進程
說到進程,首先要明確的一個概念就是什麼是進程,進程是“a program in execution”。一個進程由如下元素組成: –程序的上下文(context),它是程序當前執行的狀態 –程序的當前執行目錄 –程序訪問的文件和目錄 –程序
原创 linux 自動格式化創建多個.txt文件
格式化創建多個文件名01.txt 02.txt 03.txt... for(i=0;i <100;i++) { char sz[128]; sprintf(sz , "%02d.txt",i); fopen(s
原创 嵌入式產品開發流程
嵌入式產品開發流程一般分爲以下幾個部分: 1、 硬件開發 2、 Bootloader移植 3、 Linux內核移植 4、 根文件系統製作(供內核啓動使用) 5、 業務相關的應用程序和驅動程序的開發 6、 功能測試、性能測試、系
原创 linux下 lame軟件的使用
Lame爲一款mp3編碼軟件,可以實現.wav文件轉換爲.mp3格式的文件。該軟件支持編解碼。 % lame [參數] <輸入文件名>[<輸出文件名>]如需查詢更多參數,可輸入下列命令:# lame --longhelp =====
原创 刪除一個字符串的一部分
《C和指針》第6章編程練習: 請編寫一個函數,刪除一個字符串的一部分,函數的原型如下: int del_substr(char *str,char const *substr ) 函數首先應該判斷substr是否出現在str中,如果它並未