Time of Update: 2018-12-05
stat函數講解表標頭檔: #include <sys/stat.h> #include <unistd.h>定義函數: int stat(const char *file_name, struct stat *buf);函數說明: 通過檔案名稱filename擷取檔案資訊,並儲存在buf所指的結構體stat中傳回值: 執行成功則返回0,失敗返回-1,錯誤碼存於errno錯誤碼: ENOENT
Time of Update: 2018-12-05
umask函數為進程設定檔案模式建立屏蔽字,並返回以前的值。函數原型為:#include <sys/stat.h>mode_t umask(mode_t cmask);cmask是由下表列出的9個常量中的若干個按位“或”構成的S_IRUSR 使用者讀S_IWUSR 使用者寫S_IXUSR 使用者執行S_IRGRP 組讀S_IWGRP 組寫S_IXGRP 組執行S_IROTH 其他讀S_IWOTH
Time of Update: 2018-12-05
前段時間項目中用到了對方給的庫檔案,從最初的不會用到現在小有心得,並且在看了網上很多大牛的部落格後,總結下發在這裡。下一篇會發一篇關於在交叉編譯環境下,靜態庫和動態庫載入的問題。 一、靜態庫、動態庫的概念 庫檔案是一些函數、變數的集合,已編譯過的代碼。一般分為靜態庫和動態庫兩種。靜態庫:
Time of Update: 2018-12-05
學linux,在遇到很多問題上,都要找man。今天就熟悉一下man。1.簡單的用法,就是man (xxx)。如果記不清楚工具或者函數的完整名字,可以考慮用-k參數,例如,尋找和printf有關的協助:man -k printfapropos printf如果還有一些其他的約束資訊,可以用grep過濾一下man -k printf | grep ^printf如果僅僅想瞭解什麼是什麼,可以用-f參數man -f printfwhatis
Time of Update: 2018-12-05
在linux下,主要用到的檔案尋找有find,whereis,locate。通常 find 不是很常用的。因為速度慢之外, 也很操硬碟!通常我們都是先使用 whereis 或者是 locate來檢查,如果真的找不到了,才以 fin來搜尋。 為什麼呢?因為 whereis 不 locate 是利用資料庫來搜尋資料,所以相當的快速,而且並沒有實際的搜尋硬碟,
Time of Update: 2018-12-05
當你在unix下拿到一個二進位檔案但不知道它是什麼的時候,可以通過以下方法得到一此提示 1、 最首先應該嘗試strings命令,比如拿到一個叫cr1的二進位檔案,可以: $ strings cr1 | more 裡面可能會有一些對於這個cr1的描述,這些資訊都是編譯之後在程式中留下的一些文本性的說明,所以可能會告訴你這個檔案是什麼. 比如有輸出: $ strings cr1 | more %s %s %s%s%s -> %s%s%s
Time of Update: 2018-12-05
網上有一篇《Linux下的多線程編程》介紹的比較詳細,細讀了一遍,頗有收穫!linux下的多執行緒模式:可用getconf -a |grep GNU_LIBPTHREAD_VERSION查看,我的機器用的是redhat公司研發的NPTL
Time of Update: 2018-12-05
今天老大讓我在我們的管理機上安裝linux的ntp服務,平台是ARM9,作業系統是linux-2.4的。我就在網上找到了ntp源碼,編譯了之後,把ntpd,ntpq,ntpdate,一些檔案COPY到了管理機裡面。又自己配置了ntp.conf設定檔如下: restrict default nomodifyserver 127.127.1.0 fudge 127.127.1.0 stratum 10 啟動ntpd,命令 ntpd -c ntp.conf 用netstat -unl 可以發現UDP1
Time of Update: 2018-12-05
2012.10.24 按照ubuntu wiki上得Gcc入門,初步熟悉了Gcc得用法.單個檔案的編譯,捕捉錯誤,多個檔案的編譯。以及簡單得Makefile的使用。在連結外部庫得過程中遇到了問題。當使用 gcc -Wall file.c /usr/lib/libm.a -o file的時候,系統提示沒有這個庫。但是使用gcc -Wall file.c -lm -o file的時候,編譯成功,並且運行程式運行正常.所以我瞭解了一下
Time of Update: 2018-12-05
今天看到百度知道上有人問棧溢出怎麼檢測,我好奇心起,查了一下,結果查到linux上有一個強大的庫libsigsegv,可以檢測棧溢出(說不定也是用訊號實現的)。測了一下,果真可以。此庫可以在http://www.gnu.org/software/libsigsegv/上下載到。#include <stdio.h> #include <stdlib.h>#include "sigsegv.h"static int size = 0;void oink() {
Time of Update: 2018-12-05
今天由於要做一個處理序間通訊的小程式,我選擇了pipe,休息之餘想進一步瞭解一下Linux各子系統之間的關係,於是就請教了Bill,他給推薦給我三張圖片,頓時對於我這個菜鳥,關於Linux的整體有個清晰的認識,且學習之餘可以有個宏觀的把握,有提綱挈領只用,故分享如下:1.Simplified Linux kernal diagram in form of a matrix map2.interactive Linux kernal map (更進一步!)3. 應用程式、linux核心、驅動程式、
Time of Update: 2018-12-05
read函數只是一個通用的讀檔案裝置的介面。是否阻塞需要由裝置的屬性和設定所決定。一般來說,讀字元終端、網路的socket描述字,管道檔案等,這些檔案的預設read都是阻塞的方式。如果是讀磁碟上的檔案,一般不會是阻塞方式的。但使用鎖和fcntl設定取消檔案O_NOBLOCK狀態,也會產生阻塞的read效果。怎麼樣以非阻塞的方式從管道中讀取資料?因為我用read函數時,如果管道沒有資料就會阻塞住??? My Code是: char chBuff[32]; read(file_pipe[0],
Time of Update: 2018-12-05
轉載地址:http://blog.csdn.net/deutschester/article/details/6309521rpm 執行安裝包二進位包(Binary)以及原始碼包(Source)兩種。二進位包可以直接安裝在電腦中,而原始碼包將會由 RPM自動編譯、安裝。原始碼包經常以src.rpm作為尾碼名。常用命令組合:-ivh:安裝顯示安裝進度--install--verbose--hash-Uvh:升級軟體包--Update;-qpl: 列出RPM軟體包內的檔案資訊[Query
Time of Update: 2018-12-05
UDP資料報格式有首部和資料兩個部分。首部很簡單,共8位元組。包括: ◆源連接埠(Source Port):2位元組,源連接埠號碼。 ◆目的連接埠(Destination Port ):2位元組,目的連接埠號碼。 ◆長度(Length):2位元組,UDP使用者資料報的總長度,以位元組為單位。 ◆檢驗和(Checksum):2位元組,用於校正UDP資料報的數欄位和包含UDP資料報首部的“偽首部”。其校正方法同IP分組首部中的首部校正和。 偽首部,又稱為偽包頭(
Time of Update: 2018-12-05
該報文由12位元組的首部和4個長度可變的欄位組成。標識欄位由客戶程式設定並有伺服器返回結果。16bit的標誌欄位 如下:QR:0表示查詢報文,1表示響應報文Opcode:通常值為0(標準查詢),其他值為1(反向查詢)和2(伺服器狀態請求)。AA:表示授權回答(authoritative
Time of Update: 2018-12-05
#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include <string.h>#include <stdlib.h>#include <arpa/inet.h>#define BUFLINE 256int main(int argc, char *argv[]){struct sockaddr_in local;int fd,
Time of Update: 2018-12-05
linux中如何改變行動數據庫存取權限(即能在DDMS中開啟真機中的資料庫)用真機測試時,通常在DDMS中點不開data檔案夾,這樣就訪問不了真機中的資料庫,那麼如何能在DDMS中訪問真機中的資料庫呢?命令列操作步驟如下:ww@ww-G41D3:~$ adb shell$ su# chmod 777 data# cd data# chmod 777 data# cd data# chmod 777 com.cn.soft(要訪問的包名)# ls成功之後顯示手機中所有的安裝包的名稱# cd
Time of Update: 2018-12-05
copy from http://blog.csdn.net/chenglian_999/article/details/4785720 以前我在看關於Linux原理的內容的時候,總遇到什麼核心棧、使用者棧。今天單獨的看了一下Linux中棧的使用,在這裡作一下總結。一、linux中的堆棧 Linux0.11核中總共涉及到了四種棧:系統引導時候的臨時棧;核心初始化使用的棧;核心態棧;使用者態棧。1)
Time of Update: 2018-12-05
Hi,MM !刺蝟@http://blog.csdn.net/littlehedgehog 看得懂一段kernel代碼,但就是不太清楚這段代碼在Linux中究竟有什麼作用,可能很多的Linux kernel初學愛好者都對此深有感觸吧。這裡其實是看核心的一個絆腳石,很多的初學者對Linux其實並不是很熟悉的,或者是只是簡單的在Linux環境"遊歷"了一番,並沒有進行Linux環境下編程(或者說調用過Linux
Time of Update: 2018-12-05
HIGHMEM 刺蝟@http://blog.csdn.net/littlehedgehog 原先一直都對Linux高端記憶體的管理認識模模糊糊的,可能主要是初次接觸Linux kernel 是0.11版吧,當初的記憶體設計是16M,Linus對擁有32M的記憶體都是覬覦萬分,1G記憶體恐怕是天方夜譚了。16M記憶體哪裡還顧得上高端記憶體,腦子就一直沒有這種概念。先我們還是來看看為什麼要有高端記憶體? 80386的線性定址空間是4G,核心空間從3G開始,如果全部採用"線性映射"(