C语言-------Linux下检测某个文件是否存在
判断Linux下某个文件是否存在
以下是一个简单的 C 语言程序,用于判断 Linux 系统某个路径下是否存在某个文件:
#include <stdio.h> #include <stdlib.h> int main(void) { const char *path = "/path/to/file"; // 要检查的文件路径 FILE *fp = fopen(path, "r"); // 尝试打开文件 if (fp != NULL) { printf("%s 文件存在 ", path); fclose(fp); // 关闭文件 return EXIT_SUCCESS; } else { printf("%s 文件不存在 ", path); return EXIT_FAILURE; } }
该程序通过 fopen() 函数尝试打开指定路径下的文件,如果成功则表示文件存在,否则文件不存在。如果文件存在,则立即关闭文件句柄,并返回成功退出码;如果文件不存在,则直接返回失败退出码。程序中引入了 EXIT_SUCCESS 和 EXIT_FAILURE 宏定义,以提高代码可读性和可维护性。
利用线程周期性判断Linux下某个文件是否存在
以下是一个示例程序,可以用于周期性地检查Linux下某个路径下的文件是否存在。该程序使用了线程来实现周期性检查功能。
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <sys/stat.h> #define FILENAME "/path/to/file" // 要检查的文件路径 #define CHECK_INTERVAL 10 // 检查的时间间隔(秒) void *check_file(void *arg); int main() { pthread_t tid; int ret; // 创建线程 ret = pthread_create(&tid, NULL, check_file, NULL); if (ret != 0) { perror("pthread_create error"); exit(1); } // 等待线程结束 ret = pthread_join(tid, NULL); if (ret != 0) { perror("pthread_join error"); exit(1); } return 0; } void *check_file(void *arg) { struct stat buf; while (1) { // 检查文件是否存在 if (stat(FILENAME, &buf) == 0) { printf("File exists "); } else { printf("File does not exist "); } // 等待一段时间后再进行下一次检查 sleep(CHECK_INTERVAL); } return NULL; }
该程序通过创建一个线程来实现周期性检查功能。在线程函数 check_file 中,程序使用 stat 函数来检查指定的文件是否存在,如果文件存在则输出 File exists,否则输出 File does not exist。在每次检查完后,程序会休眠指定的时间间隔(秒),然后再进行下一次检查。
需要注意的是,如果要在程序中使用线程,需要在编译时链接 pthread 库,例如:
gcc -o program program.c -lpthread
其中 -lpthread 表示链接 pthread 库。
下一篇:
SM2可以使用私钥加密吗