execvp用于复制文件的替代方法,一旦复制完成,我希望它通知

时间:2012-10-23 05:58:39

标签: c execvp

我有使用 fork execvp 函数的代码,代码的意图是在复制完成后将src_file复制到target_path,通知用户,其状态(打印消息)

我知道execvp的使用将取代当前的过程映像。我想知道的是,有没有其他选择,这样在完成给execvp的cmd后,控件返回到我的程序并运行连续的代码。

pid = fork();
if (pid == 0) {
  /* child path */
  printf("Hello, This is CHILD(%d).\n", getpid());
  execvp("cp", av);
  printf("Completed Copying\n");
}
else {
  /* Parent's path */
  printf("Hello, This is PARENT(%d).\n", getpid());
  wait(NULL);
}

1 个答案:

答案 0 :(得分:2)

execvp将替换当前进程的映像,即调用它的进程(使用fork创建的子进程)。那你为什么不等父母(你已经做过)让孩子完成并打印信息呢?

以下链接显示了如何测试状态和返回值。 file copy

或者,为什么不对源文件和目标文件使用fopen()或open(),并使用代码(即使用读写api)在循环中复制。这是最快的,您不再需要调用外部二进制文件来实现目标。