找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2783|回復(fù): 0
收起左側(cè)

ARM LINUX嵌入式學(xué)習(xí)的一點感悟

[復(fù)制鏈接]
ID:3721 發(fā)表于 2015-1-5 16:31 | 顯示全部樓層 |閱讀模式
我在visual stdio 2010下實驗的文件操作函數(shù),linux中對文件和目錄的操作都等同于文件的操作。
linux文件主要分為四種:普通文件,目錄文件,連接文件,和設(shè)備文件。
linux中對所有文件的操作都是基于一個非負(fù)數(shù)的文件描述符進(jìn)行的。
當(dāng)打開一個文件或創(chuàng)建一個新文件時,內(nèi)核就向進(jìn)程返回一個文件描述符;當(dāng)讀寫文件時,把文件描述符作為參數(shù)傳遞給相應(yīng)的函數(shù)。

學(xué)習(xí)的過程是一個不斷否定的過程,最初看到linux中使用fopen函數(shù)達(dá)到對設(shè)備文件的調(diào)用,就像在mini2440開發(fā)板中,應(yīng)用層led閃爍程序?qū)︱?qū)動層驅(qū)動文件調(diào)用時使用如下格式:
/*打開/dev/leds 設(shè)備文件*/
fd = open("/dev/leds0", 0);

劉翔對此百思不得其解,在windows下編程fprintf函數(shù)只是普通的格式化文件輸出函數(shù)。是否在linux中每個文件都會有單獨的主函數(shù),調(diào)用fprintf時,會用對應(yīng)的參數(shù)傳達(dá)到主函數(shù)。答案是否定,因為我并沒有在驅(qū)動文件中發(fā)現(xiàn)主函數(shù)的存在。linux和window下編程應(yīng)該有著微妙的差別,于是劉翔開始了他的探索之路,期待linux嵌入式開發(fā)同行愛好者的一同進(jìn)步,由于所有的知識點沒有專業(yè)老師解答,所以都是自己看N多本書和不對實驗的總結(jié),見效之處請原諒。

// vs1.cpp : 定義控制臺應(yīng)用程序的入口點。
//文件實驗,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;
}


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表