- 论坛徽章:
- 0
|
描述:
fork 之后.. 父进程检查状态..while循环等待子进程的状态...子进程则进行 mysqldump备份数据库...子进程备份完成后 将system 返回值通过管道发给父进程..父进程读句柄得到后 则判断返回值..
部分代码:- pipe(PARENT_READ,CHILD_WRITE);
- if(my $pid = fork) {
- close(CHILD_WRITE);
- my $child_return;
- print "db_connect(...,...,...,...)\n";
- print "Parent:$\n";
- while(!sysread(PARENT_READ,$child_return,10)) { //循环等待子进程,子进程无通知则进入循环.. 问题也就出现在这...父进程一直等待子进程..阻塞...
- print "checking...\n";
- sleep(5);
- }
- print "db_con->disconnect!\n";
- $back_status = $child_return;
- print $back_status."\n";
- }else {
- if(!defined $pid) {
- print "**Error: can't fork.\n";
- print " EXEC Mail_Send function....\n";
- }
- print "CHild:$\n";
- close(PARENT_READ);
- $back_status = system("mysqldump -u root -p'taofang' test t > /tmp/t.sql");
- sleep(10);
- print CHILD_WRITE $back_status;
- exit(0);
- }
复制代码 |
|