當前位置:首頁 » 編程語言 » linux下c語言查看文件是否存在
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linux下c語言查看文件是否存在

發布時間: 2022-07-01 00:52:18

c語言判斷文件夾是否存在

使用c語言庫中的_access()函數判斷文件夾是否存在。該函數的參數中文件夾路徑中不允許由空格。因此下面的代碼運行錯誤。 其實檢查的是e盤的my文件夾。
代碼:#include <io.h
#include <stdio.h
#include <stdlib.h
void main( void ){/* Check for existence */
可以使用windows.h中的函數 CreateDirectory("E:\\my programs\\testDir\\testDir\\11", NULL);運行成功。

❷ linux c 檢查進程是否存在

1、ps 是一個shell裡面的命令,用來輸出當前進程狀態的。想知道詳細用法可以在linux命令行中輸入: man ps
2、"ABNORMAL",注意這是一個字元串常量,因為在C語言中使用雙引號可以定義一個字元串常量。這個字元串可以是程序員自己隨便寫的,就像"hello word" 一樣。"ABNORMAL"表示不正常的意思。

3、ERROR、CONFLICT、NOERROR三個常量,可以使用#define語句進行定義。至於是在哪個頭文件中定義很難說。我建議你可以在當前的.c文件開始的地方自己定義一下,例如:
#include <stdio.h>
... /*其他的頭文件等等*/

#define ERROR -1
#define CONFLICT 1
#define NOERROR 0

... /*其他的函數*/

int detect_process(char * process_name)
{
FILE *ptr;
char buff[512];
char ps[128];
sprintf(ps,"ps -e | grep -c ' %s</p>",process_name);
strcpy(buff,"ABNORMAL");
if((ptr=popen(ps, "r")) != NULL)
{
while (fgets(buff, 512, ptr) != NULL)
{
if(atoi(buff)>=2)
{
pclose(ptr);
return CONFLICT;
}
}
}
if(strcmp(buff,"ABNORMAL")==0) /*ps command error*/
return ERROR;
pclose(ptr);
return NOERROR;
}

請注意:裡面有個popen() pclose()函數,是通過管道創建一個進程,這兩個函數必須要有<stdio.h>文件。具體的參數可以參看網路:http://ke..com/view/2445803.htm?fr=aladdin。
atoi()函數能將字元串轉換成整型數。參考網路:http://ke..com/view/653935.htm。

4、整個程序的意思是:

(1)使用"ps"命令,將結果保存到ps變數中,注意sprintf的第一個參數是一個char數組。
(2)將"ABNORMAL"字元串保存到buff變數中,buff也是一個char數組。
(3)使用popen()函數創建一個進程,並將這個進程定向到標准輸出(也就是顯示器上)。
(4)將進程的輸入出存到buff變數中,然後將其轉化為數字
(5)如果這個數字>=2說明發生了沖突,返回CONFLICT
(6)在循環之後,比較一下,如果buff一直是"ABNORMAL",說明ps 命令出錯,返回ERROR
(7)否則返回NOERROR

綜上:ERROR、CONFLICT、NOERROR幾個變數只是作為函數返回值,告訴函數調用者這次調用的結果而已,所以完全可以自己定義。除非你們公司已經規定了ERROR必須是某個值,不然你是可以自己定義的,只是在以後調用detect_process()函數的時候記得什麼返回值對應什麼結果就行了。
自己定義就是在.c文件開頭使用#define 好了。

❸ c語言怎麼查找制定目錄下的文件是否存在

C語言中用OPEN函數就可以判斷出指定目錄下的文件是否存在。
比如:
#include<stdio.h>
main()
{
FILE *fp;
if((fp=fopen("c:\\filechk.txt","r"))==NULL)printf("this file is not exist";//文件不存在
else
printf("Open sucess");
close(fp);
}

❹ C語言,判斷一個文件是否存在

你貼的這個函數PathFileExists並不是C語言提供的庫函數,而是windows系統提供的系統調用,如果你是初學者,盡量用C語言提供的庫函數來實現功能,你可以這樣:
int exist(char *file) //傳入想要判斷的路徑字元串指針
{
FILE *fp;

fp=fopen(file,"r"); //fopen是一個C庫函數,用於打開文件,"r"是只讀模式,在這種模式下,如果文件存在,則能成功以只讀模式打開,fopen返回一個非0的文件描述符,如果文件不存在,則fopen返回NULL(NULL意思是空)。正好可以利用這一點來判斷文件是否存在

if(fp=NULL)

return 0; //不存在返回0

else

{

fclose(fp); //存在的話,要先把之前打開的文件關掉

return 1; //然後返回1

}

}
這樣,你就可用這里定義的exist函數判斷文件是否存在了。比如
if(exist("a.txt")==0)printf("不存在!");
else printf("存在!");

如果你真想用PathFileExists這個函數,那麼也很簡單,LPCTSTR你可以簡單理解為就相當於char*,這是windows封裝的一個數據類型。_in是一個修飾符,表示參數是傳入給PathFileExists用的而不是由PathFileExists傳出來的。這個函數可以這樣用:
if(PathFileExists("a.txt")==FALSE)printf("不存在!");
else printf("存在!");
用這個函數時注意加頭文件<windows.h>

有問題請繼續追問啊

❺ linux 查找文件夾下是否有某文件

兩個方式:find命令或者shell腳本
1、find命令
find是linux下用於查找文件的通用方法。
find語法:
find
[指定查找目錄]
[查找規則]
[查找完後執行的action]
例如:find
/tmp
-name
wa*
-type
l
,是在/tmp下查找名為wa開頭且類型為符號鏈接的文件。找到就表示存在。
2、shell腳本
在進行文件的自動處理中常常需要自動判別,下面的腳本判斷test.log是否存在,存在則顯示文件存在,否則顯示文件不存在。
例子:編輯一個腳本判斷文件是否存在
vi
t.sh
#!/bin/bash
if
[
-e
/temp/test.log
];then
//這里是判斷語句,-e表示進行比較結果為真則存在
echo
"文件存在"
else
echo
"文件不存在"
fi
保存退出
執行:
sh
t.sh

❻ linux c 查看當前目錄下是否有指定文件

1. Shell 版本
#獲取當前腳本所在絕對路徑
cur_dir=$(cd "$(dirname "$0")"; pwd)

2. C語言版本
方法一、用realpath函數。這種方法用於開機啟動程序獲取自身目錄會出錯
char current_absolute_path[MAX_SIZE];
//獲取當前目錄絕對路徑
if (NULL == realpath("./", current_absolute_path))
{
printf("***Error***\n");
exit(-1);
}
strcat(current_absolute_path, "/");
printf("current absolute path:%s\n", current_absolute_path);
方法二、用getcwd函數。這種方法用於開機啟動程序獲取自身目錄會出錯
char current_absolute_path[MAX_SIZE];
//獲取當前目錄絕對路徑
if (NULL == getcwd(current_absolute_path, MAX_SIZE))
{
printf("***Error***\n");
exit(-1);
}
printf("current absolute path:%s\n", current_absolute_path);

方法三、用readlink函數。這種方法最可靠,可用於開機啟動程序獲取自身目錄
char current_absolute_path[MAX_SIZE];
//獲取當前程序絕對路徑
int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);
if (cnt < 0 || cnt >= MAX_SIZE)
{
printf("***Error***\n");
exit(-1);
}
//獲取當前目錄絕對路徑,即去掉程序名
int i;
for (i = cnt; i >=0; --i)
{
if (current_absolute_path[i] == '/')
{
current_absolute_path[i+1] = '\0';
break;
}
}
printf("current absolute path:%s\n", current_absolute_path);

❼ linux如何查看一個文件是否存在軟鏈接

需要准備的材料分別是:電腦、linux連接工具。

1、首先連接上linux主機,進入等待輸入指令的linux命令行狀態。

❽ 在Linux下用c語言 如何判斷文件是文件還是目錄

#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
struct stat st;
printf("%s",argv[1]);
stat(argv[1],&st);
if (S_ISDIR(st.st_mode))
printf("is a dir\n");
else
printf("is not a dir\n");
return 0;
}

虛擬機上測過了.
是驗證輸入的第一個參數是不是目錄.

❾ 用純C語言怎麼判斷某個文件是否存在

如果你知道文件名和路徑的話; 直接用 fopen 是C的標准庫函數。 參數為FILE * fopen(const char * path,const char * mode); 路徑為完整路徑, mode 為打開方式, 是只讀方式打開,還是讀寫方式打開這些。

如果你只知道文件名, 不知道路徑, 我猜你想要個類似於windows 裡面的 搜索的。。。 這個說來話長了。。

再或者, 你知道路徑, 不知道文件名?
那個, 要用系統的API 來干這個事情了。不用系統級的高級函數, 搞不定了。因為這個是整個文件系統的事情了。。