我正在尝试执行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
答案 0 :(得分:1)
fork()
在子进程中返回零,在父进程中返回一个正值(假设fork成功),而wait(...)
仅在父进程中有意义,因此您需要交换您if
和else
块的内容。