1

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
4

1 に答える 1

1

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

于 2011-10-31T11:45:05.800 に答える