日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

fopen在linux中打开文件夹,plain C:用fopen()打开一个目录

發(fā)布時(shí)間:2023/12/20 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fopen在linux中打开文件夹,plain C:用fopen()打开一个目录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C99標(biāo)準(zhǔn)(或C2011標(biāo)準(zhǔn))中不存在目錄.因此,根據(jù)定義,打開目錄可以是特定于實(shí)現(xiàn)的行為,也可以是未定義的行為.

fopen(3)可能失敗(給出NULL結(jié)果). fseek(3)也可能失敗(通過返回-1).然后你最好檢查errno(3)或使用perror(3)

記錄ftell返回長(zhǎng),-1L失敗.在64位Linux上,這是0xffffffffffffffff.

你的代碼應(yīng)該是

FILE* fd = fopen(argv[1],"rb");

if (!fd)

{ perror(argv[1]); exit(EXIT_FAILURE); };

if (fseek(fd,SEEK_END)<0)

{ perror("fseek"); exit(EXIT_FAILURE); };

long flen = ftell(fd);

if (flen == -1L)

{ perror("ftell"); exit(EXIT_FAILURE); };

BTW,在帶有l(wèi)ibc-2.17和3.10.6內(nèi)核的Linux / Debian / Sid / AMD64上,當(dāng)argv [1]為/ tmp時(shí),代碼運(yùn)行正常;令人驚訝的是,flen是LONG_MAX,即0x7fffffffffffffff

順便說一句,在Linux上,目錄是文件的特例.在文件路徑上使用stat(2)(和file descriptor上的fstat,可能是從某些FILE *獲得fileno(3)),以了解更多關(guān)于某個(gè)文件的元數(shù)據(jù),包括其“類型”(通過其模式).你想要opendir(3),readdir(3)& closedir(3)對(duì)目錄內(nèi)容進(jìn)行操作.另見inode(7).

總結(jié)

以上是生活随笔為你收集整理的fopen在linux中打开文件夹,plain C:用fopen()打开一个目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。