- ベストアンサー
getppid()の使い方を教えてください。
中間ファイルの作成を行っています。 他の人が作ったファイルに自分が追加していく形で作成中です。 その中に、他の人が書いたソースがありコンパイルした所、 error C2065: 'getppid' : 定義されていない識別子です。 というエラーが返って来ます。 エラー行は sprintf(filename, TEMPFILE, temppath, getppid()); /* TmpFilenameGet*/ getppid()と言うのが何か良く分かりません。 ネット検索した所、『親プロセスのプロセスIDを返します。』 と言う意味らしいのですが、それでもよく分からないんです。 ご教授願えませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
エラーコードから判断するに、Visual C++をお使いと思いますが、 これのライブラリには getppidやそれに類する関数はありません。 自分のプロセスIDではなく親のを使う目的が良くわかりませんが、 > sprintf(filename, TEMPFILE, temppath, getppid()); /* TmpFilenameGet*/ コメントからしても一時ファイルの名前を作るのに使っているようですから、 この一文を mktemp (_mktemp) に置きかえてしまえばよいのではないですか? Windowsで親プロセスのIDを取得するのは面倒なので、 使わない方向に持っていったほうが良いと思います。 最後にご教授→ご教示です。 誤用にはお気をつけ下さりませ。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
なんというか, Unix で動いていたものを Windows で動かそうとしているような感じがありありなんですが, 中間ファイルを作りたいなら tmpnam か tmpfile を使うべきだと思います. getppid を使うのはあまり勧められないなぁ. セキュリティ上問題がありそうだし.
お礼
ありがとうございます。
- koko_u_
- ベストアンサー率18% (459/2509)
きっと、ヘッダファイルがインクルードされていないのでしょう。 ネットを調べる前に man getppid とかするのが早道。 すると <sys/types.h> と <unistd.h> をインクルードしろと書いてある。
お礼
ありがとうございます。
お礼
ありがとうございます。