我在visual stdio 2010下實驗的文件操作函數(shù),linux中對文件和目錄的操作都等同于文件的操作。
linux文件主要分為四種:普通文件,目錄文件,連接文件,和設備文件。
linux中對所有文件的操作都是基于一個非負數(shù)的文件描述符進行的。
當打開一個文件或創(chuàng)建一個新文件時,內(nèi)核就向進程返回一個文件描述符;當讀寫文件時,把文件描述符作為參數(shù)傳遞給相應的函數(shù)。
學習的過程是一個不斷否定的過程,最初看到linux中使用fopen函數(shù)達到對設備文件的調(diào)用,就像在mini2440開發(fā)板中,應用層led閃爍程序?qū)︱?qū)動層驅(qū)動文件調(diào)用時使用如下格式:
/*打開/dev/leds 設備文件*/
fd = open("/dev/leds0", 0);
劉翔對此百思不得其解,在windows下編程fprintf函數(shù)只是普通的格式化文件輸出函數(shù)。是否在linux中每個文件都會有單獨的主函數(shù),調(diào)用fprintf時,會用對應的參數(shù)傳達到主函數(shù)。答案是否定,因為我并沒有在驅(qū)動文件中發(fā)現(xiàn)主函數(shù)的存在。linux和window下編程應該有著微妙的差別,于是劉翔開始了他的探索之路,期待linux嵌入式開發(fā)同行愛好者的一同進步,由于所有的知識點沒有專業(yè)老師解答,所以都是自己看N多本書和不對實驗的總結(jié),見效之處請原諒。
// vs1.cpp : 定義控制臺應用程序的入口點。
//文件實驗,linux驅(qū)動調(diào)用的文件調(diào)用思想
//劉翔 2012年1月23日,祝有所收獲
//實驗成功fopen,fclose函數(shù)
//實驗成功gets,puts函數(shù)
//實驗成功fputs,fgets函數(shù)
#include "stdafx.h"
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
int _tmain(int argc, _TCHAR* argv[])
{ char i,buf[13];
int j,k;
FILE *fp;
fp=fopen("file.cpp","w+");
if(fp)
{//fputs("hollo world!",fp);//向文件輸出字符串
j=10;
k=100;
fprintf(fp,"%d,%d",j,k);
fclose(fp);
}
else return NULL;
fp=fopen("file.cpp","r+");
if(fp)
{//fgets(buf,12,fp);//從文件讀出字符串
j=100;
k=10;
fscanf(fp,"%d,%d",&j,&k);
printf("%d,%d",j,k);
fclose(fp);
}
else return NULL;
//for(i=0;i<12;i++)printf("%c",buf[ i]);
//puts(buf);
//gets(buf);//從終端輸入字符串
//puts(buf);//從中斷輸出字符串
return 0;
}
|