Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的远程同步目录_C_Linux - Fatal编程技术网

C语言中的远程同步目录

C语言中的远程同步目录,c,linux,C,Linux,我没有C语言的经验,但是 如果我想为linux系统编写一个C语言程序,当本地文件/目录更新时,它会自动将本地文件/目录同步到远程文件/目录;我应该查看哪些库或内置程序 到目前为止,我已经研究了inotify,但是我真的缺乏在没有帮助的情况下搜索它的术语 编辑 这只是一个练习。有一个实现rsync算法的库。但是你真的需要在C语言中这样做吗?一种更常见、更简单的方法是使用shell脚本和程序。inotify。当你陷入困境时,请回来问更具体的问题 这是一个让你开始的例子(借口C++输出语句,想象一下代

我没有C语言的经验,但是

如果我想为linux系统编写一个C语言程序,当本地文件/目录更新时,它会自动将本地文件/目录同步到远程文件/目录;我应该查看哪些库或内置程序

到目前为止,我已经研究了inotify,但是我真的缺乏在没有帮助的情况下搜索它的术语

编辑


这只是一个练习。

有一个实现rsync算法的库。但是你真的需要在C语言中这样做吗?一种更常见、更简单的方法是使用shell脚本和程序。

inotify
。当你陷入困境时,请回来问更具体的问题

这是一个让你开始的例子(借口C++输出语句,想象一下代码> PROTFF < /Cord>):< /P>

void waitfor_活动(const char*path)
{
const int fd=inotify_init();
const int wd=inotify_add_watch(fd,path,IN_MODIFY | IN_CLOSE_WRITE);
字符缓冲区[EVENT_BUF_LEN];
while(true)
{
const ssize_t length=读取(fd、缓冲区、事件长度);
如果(长度<0){
佩罗(“阅读”);
}  
常量结构inotify_事件*事件=(结构inotify_事件*)缓冲区;
标准::cout掩码和输入(关闭写入)
{
标准::cout掩码和IN_修改)
{

std::cout我会采取的最简单的方法是编写一个客户机-服务器应用程序-客户机将监视更改并向服务器发送差异,服务器将在远程机器上应用补丁。例如,这似乎可以通过使用BSD套接字API和libdiff轻松实现。您可以使用任何语言进行此练习,以访问E系统调用(例如OcAML、Perl、Python、露比、C、C++、…)是的。我非常熟悉RSyc。这是或多或少的一个训练练习,因为我正试图熟悉不同的语言。我将看一个LabSeCalc。谢谢你们的鼓励。
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);
}