1. 程式人生 > >linux C判斷檔案是否存在【轉】

linux C判斷檔案是否存在【轉】

一、access函式

功能描述: 
檢查呼叫程序是否可以對指定的檔案執行某種操作。 
  
用法: 
#include <unistd.h>
#include <fcntl.h>

int access(const char *pathname, int mode);   
  
引數: 
pathname: 需要測試的檔案路徑名。   
mode: 需要測試的操作模式,可能值是一個或多個R_OK(可讀?), W_OK(可寫?), X_OK(可執行?) 或 F_OK(檔案存在?)組合體。 
  
返回說明: 
成功執行時,返回0。失敗返回-1,errno被設為以下的某個值 
EINVAL: 模式值無效   
EACCES: 檔案或路徑名中包含的目錄不可訪問 
ELOOP : 解釋路徑名過程中存在太多的符號連線 
ENAMETOOLONG:路徑名太長 
ENOENT:  路徑名中的目錄不存在或是無效的符號連線 
ENOTDIR: 路徑名中當作目錄的元件並非目錄 
EROFS: 檔案系統只讀 
EFAULT: 路徑名指向可訪問的空間外 
EIO:  輸入輸出錯誤 
ENOMEM: 不能獲取足夠的核心記憶體 
ETXTBSY:對程式寫入出錯

  1. #include <stdio.h>   
  2. #include <stdlib.h>   
  3. #include <unistd.h>   
  4. #include <fcntl.h>   
  5. int main()   
  6. {   
  7.     if((access("test.c",F_OK))!=-1)   
  8.     {   
  9.         printf("檔案 test.c 存在.\n");   
  10.     }   
  11.     else  
  12.     {   
  13.         printf("test.c 不存在!\n");   
  14.     }   
  15.     if(access("test.c"
    ,R_OK)!=-1)   
  16.     {   
  17.         printf("test.c 有可讀許可權\n");   
  18.     }   
  19.     else  
  20.     {   
  21.         printf("test.c 不可讀.\n");   
  22.     }   
  23.     if(access("test.c",W_OK)!=-1)   
  24.     {   
  25.         printf("test.c 有可寫許可權\n");   
  26.     }   
  27.     else  
  28.     {   
  29.         printf("test.c 不可寫.\n");   
  30.     }   
  31.     if(access("test.c"
    ,X_OK)!=-1)   
  32.     {   
  33.         printf("test.c 有可執行許可權\n");   
  34.     }   
  35.     else  
  36.     {   
  37.         printf("test.c 不可執行.\n");   
  38.     }   
  39.     return 0;   
  40. }  
  1. #include <stdio.h>   
  2. #include <time.h>   
  3. int main()   
  4. {   
  5.     time_t now = time(NULL);   
  6.     char buf[25];   
  7.     strftime(buf,24,"%Y%m%d",localtime(&now));   
  8.     printf("%s\n",buf);   
  9.     strftime(buf,24,"%Y-%m-%d %H:%M:%S",localtime(&now));   
  10.     printf("%s\n",buf);   
  11.     strftime(buf,24,"%y%m%d %H:%M:%S",localtime(&now));   
  12.     printf("%s\n",buf);   
  13.     strftime(buf,24,"%y%m%d",localtime(&now));   
  14.     printf("%s\n",buf);   
  15.     strftime(buf,24,"%H:%M:%S",localtime(&now));   
  16.     printf("%s\n",buf);   
  17.     return 0;   
  18. }  

相關推薦

linux C判斷檔案是否存在

一、access函式 功能描述:  檢查呼叫程序是否可以對指定的檔案執行某種操作。     用法:  #include <unistd.h> #include <fcntl.h> int access(const char *pathname,

linux core dump 檔案 gdb分析

core dump又叫核心轉儲, 當程式執行過程中發生異常, 程式異常退出時, 由作業系統把程式當前的記憶體狀況儲存在一個core檔案中, 叫core dump. (linux中如果記憶體越界會收到SIGSEGV訊號,然後就會core dump) 在程式執行的過程中,有

C#中.snk檔案的作用

 SNK,作為程式字尾的時候,是.net中的強密匙加密檔案! 當你把一個程式集放進GAC(全域性程式集快取)時,就要加強名(也就是簽名),在GAC中的程式集可以被所有程式引用訪問(相當於以前COM元件在登錄檔裡註冊一樣),如果不放進GAC,剛所有使用這個程式集都要複製這個程式集(也就是私有

mlock家族:鎖定物理內

簡單 %0 ive alloc 即使 編程 string類 第一個 lang 轉自:http://blog.csdn.net/fjt19900921/article/details/8074541 鎖住內存是為了防止這段內存被操作系統swap掉。並且由於此操作風險高,僅超

C++中的異常安全性

div 現實 操作 ... 基本 數據 安全性 異常安全 做的 原文寫的非常好,來自這裏 一個函數如果說是“異常安全”的,必須同時滿足以下兩個條件:1.不泄漏任何資源;2.不允許破壞數據。 我們先通過兩個反面的例子開始。 第一個是造成資源泄漏的例子。一個類Ty

Linux下git源碼安裝

lac itl 允許 pla rom code ins 8.0 代碼 轉自:http://blog.csdn.net/u012889638/article/details/51167123 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 版本信息:Cent

C#中的數組

常用屬性 創建 ++ 返回 foreach 限制 允許 [] 總數 目錄 數組的聲明 數組的初始化 數組的訪問 數組的常用屬性和方法   為方便起見,以下數組均定義為整型   數組的聲明     C#聲明數組時,方括號[]必須跟

Linux htop工具使用詳解

進程信息 保存 作用 ctrl+c 設置 uri ppi 虛擬 獲取 原文地址: http://www.cnphp6.com/archives/65078 一.Htop的使用簡介 大家可能對top監控軟件比較熟悉,今天我為大家介紹另外一個監控軟件Htop,姑且稱之為top的

linux中結構體對齊

src double 無需 fine types 查看 真理 blog 多個 轉自:https://blog.csdn.net/suifengpiao_2011/article/details/47260085 linux中定義對齊字節 typedef struct

C++中STL用法總結

(轉自:https://blog.csdn.net/piaoxuezhong/article/details/54348787?utm_source=blogxgwz8) 1.1 什麼是STL? STL(Standard Template Library),即標準模板庫,是一個具有工業強度的

C++ vector型別要點總結

(轉自:https://blog.csdn.net/suool/article/details/13295439?utm_source=blogxgwz22)   概述 C++內建的陣列支援容器的機制,但是它不支援容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準C++中

C++中的::的作用

(轉自:https://blog.csdn.net/zhanghuaichao/article/details/55676209?utm_source=blogxgwz0) (1)作用域限定符,當在類體中直接定義函式時,不需要在函式名字的前面加上類名,但是在類體外實現函式定義的時候,必須加上類名

linux中的sh指令碼語法

(轉自:http://tsov.net/sh-script-syntax/) 玩linux都知道sh指令碼的方便,但如何編寫sh指令碼卻是像我這樣的新手和菜鳥的難題。能不能編寫得出來是一回事,了不瞭解又是另一回事。抱著好好學習,天天向上的精神,大家有空就看看吧,沒有壞處的。下面來抄來一大段sh指

Linux核心中的迴圈緩衝區

  (轉自:https://blog.csdn.net/heanyu/article/details/6291825) 迴圈緩衝區定義在include/linux/kfifo.h中,如下: struct kfifo { unsigned char *buffer; /

Linux裝置樹語法詳解

轉自:https://www.cnblogs.com/xiaojiang1025/p/6131381.html 概念 Linux核心從3.x開始引入裝置樹的概念,用於實現驅動程式碼與裝置資訊相分離。在裝置樹出現以前,所有關於裝置的具體資訊都要寫在驅動裡,一旦外圍裝置變化,驅動程式碼就要重寫。引入了裝置樹之

linux核心除錯技巧之一 dump_stack

在核心中程式碼呼叫過程難以跟蹤,上下文關係複雜,確實讓人頭痛 呼叫dump_stack()就會列印當前cpu的堆疊的呼叫函數了。 如此,一目瞭然的就能看到當前上下文環境,呼叫關係了 假設: 遇到uvc_probe_video這麼一個函式,不知道它最終是被誰呼叫到的,根據linux裝置模型,初步推測,p

C++中的mutable關鍵字

mutalbe的中文意思是“可變的,易變的”,跟constant(既C++中的const)是反義詞。     在C++中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在一個const函式中。     我們知道,

一個易錯的面試題來加深對C++多型的理解

    原題目程式比較長, 我來簡化成核心的考察部分, 如下: #include <iostream> using namespace std; class A { public: virtual void x() { cout <<

linux中的strings命令簡介

strings - print the strings of printable characters in files.          意思是, 列印檔案中可列印的字元。  我來補充一下吧, 這個檔案可以是文字檔案(test.c), 可執行檔案(test),  動

Linux下調整ext3分割槽大小

本文轉載自:https://blog.csdn.net/cruise_h/article/details/22403529 本文討論如何再不丟失資料的情況下調整已有ext3分割槽的大小,包括: 壓縮已有分割槽 增大已有分割槽 合併兩個ext3分割槽 這在沒有使用LVM(邏輯卷管理),而