我在C没有经验,但是......远程同步目录
如果我想写一个程序,在C,为Linux系统,这将本地文件/目录同步到远程文件/目录,自动当本地文件/目录更新;我应该看看哪些库或嵌入式应用?
到目前为止,我看着inotify,但我真的缺乏没有一些帮助的搜索这个术语。
编辑
这仅仅是一个锻炼。
我在C没有经验,但是......远程同步目录
如果我想写一个程序,在C,为Linux系统,这将本地文件/目录同步到远程文件/目录,自动当本地文件/目录更新;我应该看看哪些库或嵌入式应用?
到目前为止,我看着inotify,但我真的缺乏没有一些帮助的搜索这个术语。
编辑
这仅仅是一个锻炼。
inotify
是要走的路。通过它努力奋斗,当你陷入困境时会回来,并在这里提出更具体的问题。
这里有让你开始一个例子(原谅C++输出语句,想象printf
代替):
void waitfor_activity(const char *path)
{
const int fd = inotify_init();
const int wd = inotify_add_watch(fd, path, IN_MODIFY | IN_CLOSE_WRITE);
char buffer[EVENT_BUF_LEN];
while (true)
{
const ssize_t length = read(fd, buffer, EVENT_BUF_LEN);
if (length < 0) {
perror("read");
}
const struct inotify_event *event = (struct inotify_event *) buffer;
std::cout << "event: ";
if (event->mask & IN_CLOSE_WRITE)
{
std::cout << "IN_CLOSE_WRITE ";
}
if (event->mask & IN_MODIFY)
{
std::cout << "IN_MODIFY ";
}
std::cout << std::endl;
}
close(fd);
}
感谢您的鼓励。 – noel
我会带正在写一个客户端 - 服务器应用程序的简易方法 - 客户会看更改并向服务器发送一个差异,服务器将在远程机器上应用该补丁。例如,这似乎很容易通过使用BSD套接字API和libdiff来实现。 – 2012-11-04 07:47:37
您可以使用任何语言进行练习,以便访问系统调用(例如Ocaml,Perl,Python,Ruby,C,C++,...) –