2011-10-31 7 views
1

PDFドキュメントを印刷して終了するまで、LPを実行しようとしています。 の後、私はunlink()でファイルを削除しようとしています。ANSI C - プロセスの実行、待機、ファイルの削除

しかし、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); 
     } 

ouputをこのようになります。

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 

答えて

1

fork()に戻って、子プロセスではゼロ、及び(フォーク成功したと仮定して)親プロセスに正の値、及びwait(...)は親プロセスでのみ意味がありますので、ifelseブロックの内容を交換する必要があります。

関連する問題