0

以下代码调用了一个 except 脚本,该脚本通过 ftp 将文件复制到服务器。

int status;
int child_pnr;  

if((child_pnr = fork())==0)
{
    printf("Childnr %i\n",child_pnr);
    execv("/home/..../ftptest.exp",NULL);

}
else if (child_pnr > 0)
{
    printf("Parent... childnr %i generated\n",child_pnr);
    sleep(7);
}
else
    perror("fork() error");

由于 execv() 将在执行后终止,我为此函数生成了一个子进程。如果我没有 sleep(7),为什么 ftptest.exp 会从父级中断....

4

1 回答 1

2

通过“中断”,我认为您的意思是父母不会等待孩子完成操作,然后再执行下一步操作?

分叉后,父子节点将并行运行。如果您希望父母“挂起”直到孩子完成,那么您需要这样做wait

在 Internet 上查看man wait并搜索 fork 示例。

于 2012-09-10T09:44:52.377 回答