[英]ANSI C - Execute Process, Wait, Delete File
我正在嘗試執行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
塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.