一个监控文件发生变化,进行拷贝的程序
/*
============================================================================
Name : watchfile.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <unistd.h>
#define runError 1
int main(int argc, char* argv[]) {
int pid;
struct stat stbuf;
time_t old_time;
if(argc != 3)
{
printf("Usage: %s watchfile copyfile\n", argv[0]);
return runError;
}
/*fd = open(argv[1], O_RDONLY);
if(fd == -1)
{
printf("Usage: %s cannot open\n", argv[1]);
return runError;
}*/
stat(argv[1], &stbuf); //获取文件信息
old_time = stbuf.st_mtim.tv_sec;
for(;;)
{
stat(argv[1], &stbuf); //获取文件信息
if(old_time != stbuf.st_mtim.tv_sec)
{
pid = fork();
if(pid == 0)
{
execl("/bin/cp", "/bin/cp", argv[1], argv[2], (char *)0);
printf("//bin/cp called");
return 0;
}
wait((int*)&stat);
old_time = stbuf.st_mtim.tv_sec;
}
else
sleep(1);
}
return 0;
}