fork() - parent忽略expect脚本的execve()

时间:2012-09-10 09:39:08

标签: c linux ubuntu-12.04

以下代码调用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()将在执行后终止,因此我为此函数生成了一个子进程。如果我没有睡眠(7),为什么ftptest.exp会从父母中断?

1 个答案:

答案 0 :(得分:2)

通过“中断”,我认为你的意思是父母在做下一步之前不等待孩子完成操作?

父和子将在fork之后并行运行。如果您希望父母在孩子完成之前“挂起”,那么您需要wait

请参阅man wait并在互联网上搜索fork示例。