ANSI C-执行进程,等待,删除文件

ANSI C-执行进程,等待,删除文件,c,fork,execv,C,Fork,Execv,我正在尝试执行LP打印PDF文档并等待它退出。之后 它存在我正在尝试用unlink()删除文件 但是,等待甚至在execv执行LP之前完成。我不太确定 如何处理此问题,以及为什么等待不会等到execv完成 有没有其他方法可以做到这一点 if(fork()) { fprintf(stderr, "Executing command %s %s", "/usr/bin/lp", homedir); char *const

我正在尝试执行LP打印PDF文档并等待它退出。之后 它存在我正在尝试用unlink()删除文件

但是,等待甚至在execv执行LP之前完成。我不太确定 如何处理此问题,以及为什么等待不会等到execv完成

有没有其他方法可以做到这一点

        if(fork())
        {
            fprintf(stderr, "Executing command %s %s", "/usr/bin/lp", homedir);
            char *const parmList[] = {"/usr/bin/lp", homedir, (char *)0};
            execv("/usr/bin/lp", parmList );

        }else
        {
            int pid, status;
            fprintf(stderr, "Wait\n");
            pid = wait(&status);
            fprintf(stderr, "Finished waiting.\n");
            unlink(homedir);
        }
执行上述代码时,输出如下所示:

Wait
Finished waiting.
Executing command /usr/bin/lp /home/user/Docs/test.pdf
/usr/bin/lp: Error - unable to access "/home/user/Docs/test.pdf" - No such file or directory
fork()
在子进程中返回零,在父进程中返回正值(假设fork成功),而
wait(…)
仅在父进程中有意义,因此您需要交换
if
else
块的内容。

fork()
在子进程中返回零,父进程中的正值(假设fork成功)和
wait(…)
仅在父进程中有意义,因此您需要交换
if
else
块的内容