原创 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中,如果它並未