  复制int rdbSaveBackground(char *filename) {                 pid_t childpid;                 long long start;                 if (server.rdb_child_pid != -1) return REDIS_ERR;                 serverserver.dirty_before_bgsave = server.dirty;                 server.lastbgsave_try = time(NULL);                 start = ustime();                 if ((childpid = fork()) == 0) {                     int retval;                     /* Child */                     if (server.ipfd > 0) close(server.ipfd);                     if (server.sofd > 0) close(server.sofd);                     retval = rdbSave(filename);                     if (retval == REDIS_OK) {                         size_t private_dirty = zmalloc_get_private_dirty();                         if (private_dirty) {                             redisLog(REDIS_NOTICE,时问                                 "RDB: %zu MB of memory used by copy-on-write",                                 private_dirty/(1024*1024));                         }                     }                     exitFromChild((retval == REDIS_OK) ? 0 : 1);                 } else {                     /* Parent */                     server.stat_fork_time = ustime()-start;                     if (childpid == -1) {                         server.lastbgsave_status = REDIS_ERR;                         redisLog(REDIS_WARNING,"Cant save in background: fork: %s",                             strerror(errno));                         return REDIS_ERR;                     }                     redisLog(REDIS_NOTICE,"Background saving started by pid %d",childpid);                     server.rdb_save_time_start = time(NULL);                     server.rdb_child_pid = childpid;                     updateDictResizePolicy();                     return REDIS_OK;                 }                 return REDIS_OK; /* unreached */             }             1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40. |