c实现实现linux下的数据库备份下的数据库备份
本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考
下。
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"
//最多可以备份的数据库数量
#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");
exit(1);
}
switch (pid) {
case -1:
fprintf(stderr, "fork failed");
exit(1);
case 0:
//子进程进行数据库的备份
for (i = 0; i < read_num; i++) {
memset(buf, ' ', LEN);
sprintf(buf, "%s%s%s%s%s", "mysqldump -uroot ", db_list[i], " > ", db_list[i], ".sql");
system(buf);
printf("%d,%s", 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");
}
exit(1);
}
评论0
最新资源