判断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 文件存在\n", path);
fclose(fp); // 关闭文件
return EXIT_SUCCESS;
} else {
printf("%s 文件不存在\n", 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\n");
} else {
printf("File does not exist\n");
}
// 等待一段时间后再进行下一次检查
sleep(CHECK_INTERVAL);
}
return NULL;
}
该程序通过创建一个线程来实现周期性检查功能。在线程函数 check_file 中,程序使用 stat 函数来检查指定的文件是否存在,如果文件存在则输出 File exists,否则输出 File does not exist。在每次检查完后,程序会休眠指定的时间间隔(秒),然后再进行下一次检查。
需要注意的是,如果要在程序中使用线程,需要在编译时链接 pthread 库,例如:文章来源:https://www.toymoban.com/news/detail-523289.html
gcc -o program program.c -lpthread
其中 -lpthread 表示链接 pthread 库。文章来源地址https://www.toymoban.com/news/detail-523289.html
到了这里,关于C语言-------Linux下检测某个文件是否存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!