文件

引言

練習(xí):完成cp的功能

步驟:
1.創(chuàng)建.c文件
2好爬、編輯.c文件
訪問文件
打開文件局雄,讀或者寫文件,關(guān)閉文件
保存并退出
3存炮、編譯 gcc或者makefile
4炬搭、驗(yàn)證是否成功

解決QT無法編譯代碼的問題:

yum install xterm

read/ write
//模擬cp命令
#include <unistd.h>
#include <stdio.h>
#include  <fcntl.h>
int main()
{
    int    fd;
    int    fdw;
    ssize_t   nread;
    char       buf[1024];
    fd = open("/home/neusoft/demo.txt" , O_RDONLY);
    fdw = open("/home/neusoft/demo.cpp" , O_WRONLY|O_CREAT| O_TRUNC ,0644 );
    if(fd == -1) {
        perror("error");
        exit(1);
    }
    if(fdw == -1) {
        perror("error");
        exit(1);
    }
    while((nread = read(fd , buf, 1024))!=0){
        write(fdw,buf,nread);
    }
//    if(nread == -1)  exit(1);
    close(fd);
    close(fdw);
    printf("***********");
//    printf("%s",buf);
//    printf("***********");
    exit(0);
}
fgetc/fputc
#include <stdio.h>
#include <memory.h>
//   ~adc.c    adc.cpp
int main(void)
{
    //打開文件
    int n=0;
    FILE *fr = fopen("/home/neusoft/adc.c","r");
    if(NULL == fr){
        perror("文件打開失敗");
        exit(1);
    }
    FILE *fw = fopen("/home/neusoft/adc.cpp","w");
    while((n=fgetc(fr))!=EOF){
        fputc(n,fw);
    }
    fclose(fr);
    fclose(fw);
    printf("Hello World!\n");
    return 0;
}

結(jié)論

庫函數(shù)和系統(tǒng)調(diào)用都可以實(shí)現(xiàn)的時(shí)候,優(yōu)先考慮庫函數(shù)(因?yàn)閹旌瘮?shù)有個(gè)緩輸出的過程)

練習(xí):

使用lseek

#include<unistd.h>
/* Standard file descriptors.  */
 #define STDIN_FILENO    0       /* 標(biāo)準(zhǔn)輸入.  */
 #define STDOUT_FILENO   1       /* 標(biāo)準(zhǔn)輸出.  */
 #define STDERR_FILENO   2       /* 標(biāo)準(zhǔn)錯(cuò)誤輸出.  */

將制定的字符串寫入文件 a.txt
并讀出文件內(nèi)容到終端

#include <stdio.h>
#include <unistd.h>
#include <stdio.h>
#include  <fcntl.h>
#include <string.h>

int main(void)
{
    int    fd;
    int    fdw;
    ssize_t   nread;
    char       buf[] = "go go go go go go";
    //fd = open("/home/neusoft/adc.c" , O_RDONLY);
    fdw = open("/home/neusoft/a.cpp" , O_RDWR|O_CREAT| O_TRUNC ,0644 );
    if(fdw == -1) {
        perror("error");
        exit(1);
    }
    write(fdw,buf,strlen(buf));
   lseek(fdw,0,SEEK_SET);
    while((nread = read(fdw , buf, 1024)))
    {
 //       printf("%d\n",nread);
        write(STDOUT_FILENO,buf,nread);
    }
    close(fdw);
    exit(0);
}


結(jié)論:

文件的讀和寫使用的是同一個(gè)偏移量的位置穆桂,應(yīng)使用lseek宫盔。

#include <stdio.h>
#include <unistd.h>
#include <stdio.h>
#include  <fcntl.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>

int main01(void)
{
    int    fd;
    int    fdw;
    ssize_t   nread;
    char       buf[] = "go go go go go go";
    //fd = open("/home/neusoft/adc.c" , O_RDONLY);
    fdw = open("/home/neusoft/a.cpp" , O_RDWR|O_CREAT| O_TRUNC ,0644 );
    if(fdw == -1) {
        perror("error");
        exit(1);
    }
    write(fdw,buf,strlen(buf));
   lseek(fdw,0,SEEK_SET);
    while((nread = read(fdw , buf, 1024)))
    {
 //       printf("%d\n",nread);
        write(STDOUT_FILENO,buf,nread);
    }
    close(fdw);
    exit(0);
}
//計(jì)算文件的大小  buf.st_size
//int stat(const char *path, struct stat *buf);
int main()
{
    struct stat buf ;
    int ret = 0;
    ret = lstat ("/home/neusoft/sf02",&buf);
    if(ret == -1)
    {
        perror("stat fail");
        exit(1);
    }
    //    printf("******");
//    printf("%d\n",buf.st_size);
    mode_t  modes;
    modes = buf.st_mode;
    if (S_ISDIR(modes))
       printf("S_ISDIR");
    if (S_ISLNK(modes))
        printf("S_ISLNK");
        exit(0);
}

結(jié)論

stat與lstat使用文件名l查看文件狀態(tài)信息疆柔。
兩者基本一致损肛,但當(dāng)文件是一個(gè)符號(hào)連接時(shí)锨并,lstat返回符號(hào)連接本身信息泳姐,stat返回該連接指向的文件的信息渠啊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末布隔,一起剝皮案震驚了整個(gè)濱河市余爆,隨后出現(xiàn)的幾起案子斋配,更是在濱河造成了極大的恐慌,老刑警劉巖寄悯,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萤衰,死亡現(xiàn)場離奇詭異,居然都是意外死亡猜旬,警方通過查閱死者的電腦和手機(jī)脆栋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昔馋,“玉大人筹吐,你說我怎么就攤上這事∶囟簦” “怎么了丘薛?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長邦危。 經(jīng)常有香客問我洋侨,道長,這世上最難降的妖魔是什么倦蚪? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任希坚,我火速辦了婚禮,結(jié)果婚禮上陵且,老公的妹妹穿的比我還像新娘裁僧。我一直安慰自己,他們只是感情好慕购,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布聊疲。 她就那樣靜靜地躺著,像睡著了一般沪悲。 火紅的嫁衣襯著肌膚如雪获洲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天殿如,我揣著相機(jī)與錄音贡珊,去河邊找鬼。 笑死涉馁,一個(gè)胖子當(dāng)著我的面吹牛门岔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谨胞,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼固歪,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了胯努?” 一聲冷哼從身側(cè)響起牢裳,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叶沛,沒想到半個(gè)月后蒲讯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灰署,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年判帮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉箕。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晦墙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肴茄,到底是詐尸還是另有隱情晌畅,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布寡痰,位于F島的核電站抗楔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拦坠。R本人自食惡果不足惜连躏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贞滨。 院中可真熱鬧入热,春花似錦、人聲如沸晓铆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尤蒿。三九已至郑气,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腰池,已是汗流浹背尾组。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留示弓,地道東北人讳侨。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像奏属,于是被迫代替她去往敵國和親跨跨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 文件操作 (Linux文件操作)) [文件|目錄] Linux文件操作:為了對(duì)文件和目錄進(jìn)程處理,你需要用到系統(tǒng)...
    JamesPeng閱讀 1,462評(píng)論 1 5
  • [轉(zhuǎn)]C/C++ 文件讀寫操作總結(jié) 在編程的過程中勇婴,文件的操作是一個(gè)經(jīng)常用到的問題忱嘹,在C++Builder中,可以...
    天之道天知道閱讀 5,194評(píng)論 0 7
  • 第三章 文件i/o 3.1引言 不帶緩沖的io(unix系統(tǒng)在內(nèi)核中設(shè)有緩沖區(qū)耕渴,這個(gè)不帶緩沖意思是用戶不自己緩沖)...
    m風(fēng)滿樓閱讀 991評(píng)論 0 0
  • 所有執(zhí)行I/O操作的系統(tǒng)調(diào)用都以文件描述符(一個(gè)非負(fù)整數(shù))來指代打開的文件拘悦。包括pipe,F(xiàn)IFO橱脸,socket础米,...
    loopppp閱讀 646評(píng)論 0 0
  • 底層文件訪問 open系統(tǒng)調(diào)用 在遵循POSIX規(guī)范的系統(tǒng)上,使用open系統(tǒng)調(diào)用并不需要包含頭文件sys/typ...
    Select_Ep閱讀 1,465評(píng)論 1 3