a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

c實現linux下的數據庫備份

2020-01-26 15:02:00
字體:
來源:轉載
供稿:網友

Linux下c實現的數據庫備份,只要修改數據庫列表文件的信息即可。

db_list.txt把后綴去掉即可,一個數據庫一行。

1. main.c  

#include<sys/types.h>#include<sys/wait.h>#include<ctype.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<stdio.h> //待備份的數據表文件(一個數據庫一行)#define DB_FILE "./db_list"http://最多可以備份的數據庫數量#define NUM 20//一個數據庫名字的最長字符數#define LEN 128//保存從DB_FILE中讀取到的數據庫char *db_list[NUM];//從DB_FILE文件中讀取到的數據庫數量int read_num;//請求內存函數void malloc_dblist();//釋放內存函數void free_dblist();//讀取數據庫文件void readDbFile(); int main(int argc, char *argv[]) {  pid_t pid;  int i;  char buf[LEN];   //從文件讀取數據庫信息  readDbFile();     pid = fork();   if (pid < 0) {    fprintf(stderr, "fork error/n");    exit(1);  }     switch (pid) {    case -1:      fprintf(stderr, "fork failed/n");      exit(1);    case 0:      //子進程進行數據庫的備份      for (i = 0; i < read_num; i++) {        memset(buf, '/0', LEN);        sprintf(buf, "%s%s%s%s%s", "mysqldump -uroot ", db_list[i], " > ", db_list[i], ".sql");        system(buf);        printf("%d,%s/n", i, buf);      }      break;  }  //等待子進程的結束  if (pid > 0) {    int stat_val;    pid_t child_pid;         child_pid = wait(&stat_val);         if (!WIFEXITED(stat_val)) {      fprintf(stdout, "Child terminated abnormaly/n");    }    exit(1);       }     free_dblist();     exit(0);   } void malloc_dblist(){  int i = 0;  //malloc for db_list  for (i = 0; i < NUM; i++) {    db_list[i] = malloc(LEN);    memset(db_list[i], '/0', LEN);  }}void free_dblist(){  int i;  //free db_list's memory  for (i = 0; i < NUM; i++) {    free(db_list[i]);  }} void readDbFile(){  FILE *fp;     fp = fopen(DB_FILE, "r");  if (!fp) {    fprintf(stderr, "%s not found/n", DB_FILE);  }  else {    malloc_dblist();         read_num = 0;    while (fscanf(fp, "%127[^/r/n]/n", db_list[read_num]) == 1) {      puts(db_list[read_num]);      read_num++;    }         fclose(fp);   }   }

2. db_list.txt

adminbook

3.

#include<sys/types.h>#include<sys/wait.h>#include<ctype.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<stdio.h> //待備份的數據表文件(一個數據庫一行)#define DB_FILE "./db_list"http://最多可以備份的數據庫數量#define NUM 20//一個數據庫名字的最長字符數#define LEN 128//保存從DB_FILE中讀取到的數據庫char *db_list[NUM];//從DB_FILE文件中讀取到的數據庫數量int read_num;//請求內存函數void malloc_dblist();//釋放內存函數void free_dblist();//讀取數據庫文件void readDbFile(); int main(int argc, char *argv[]) {  pid_t pid;  int i;  char buf[LEN];   //從文件讀取數據庫信息  readDbFile();     pid = fork();   if (pid < 0) {    fprintf(stderr, "fork error/n");    exit(1);  }     switch (pid) {    case -1:      fprintf(stderr, "fork failed/n");      exit(1);    case 0:      //子進程進行數據庫的備份      for (i = 0; i < read_num; i++) {        memset(buf, '/0', LEN);        sprintf(buf, "%s%s%s%s%s", "mysqldump -uroot ", db_list[i], " > ", db_list[i], ".sql");        system(buf);        printf("%d,%s/n", i, buf);      }      break;  }  //等待子進程的結束  if (pid > 0) {    int stat_val;    pid_t child_pid;         child_pid = wait(&stat_val);         if (!WIFEXITED(stat_val)) {      fprintf(stdout, "Child terminated abnormaly/n");    }    exit(1);       }     free_dblist();     exit(0);   } void malloc_dblist(){  int i = 0;  //malloc for db_list  for (i = 0; i < NUM; i++) {    db_list[i] = malloc(LEN);    memset(db_list[i], '/0', LEN);  }}void free_dblist(){  int i;  //free db_list's memory  for (i = 0; i < NUM; i++) {    free(db_list[i]);  }} void readDbFile(){  FILE *fp;     fp = fopen(DB_FILE, "r");  if (!fp) {    fprintf(stderr, "%s not found/n", DB_FILE);  }  else {    malloc_dblist();         read_num = 0;    while (fscanf(fp, "%127[^/r/n]/n", db_list[read_num]) == 1) {      puts(db_list[read_num]);      read_num++;    }         fclose(fp);   }   }

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 午夜视频在线观看网站 | av中文字幕网 | 成人一区二区三区视频 | 国产在线精品一区二区 | 四虎最新网站 | 免费观看视频www | 一区久久| 国产精品永久在线 | 婷婷国产成人精品视频 | 久久亚洲高清 | 国内外成人在线视频 | 亚洲天堂免费在线视频 | 日本妇人成熟免费视频 | 欧美一区二区三区啪啪 | 国产精品1区2区 | 午夜久久久 | 国产午夜精品一区二区三区 | www国产亚洲 | 亚洲一区视频在线 | 久久99国产精品久久99大师 | 欧美日韩精品一区二区三区蜜桃 | 久久久网| 日韩免费在线 | 久久888 | 亚洲艹| 中文字幕在线永久 | av观看 | 久久久久国产精品午夜一区 | 亚洲激情视频在线观看 | 欧美视频在线观看免费 | 污视频链接 | 日批视频在线播放 | 欧美大片免费看 | 超碰97成人| 国产精品成人3p一区二区三区 | 91精品国产欧美一区二区成人 | 国产成人啪精品午夜在线观看 | 国产在线一区观看 | 日韩三级av | 97国产精品视频人人做人人爱 | 波多野结衣一区二 |