電子書籍の厳選無料作品が豊富!

中間ファイルの作成を行っています。
他の人が作ったファイルに自分が追加していく形で作成中です。
その中に、他の人が書いたソースがありコンパイルした所、

error C2065: 'getppid' : 定義されていない識別子です。

というエラーが返って来ます。
エラー行は
sprintf(filename, TEMPFILE, temppath, getppid()); /* TmpFilenameGet*/
getppid()と言うのが何か良く分かりません。
ネット検索した所、『親プロセスのプロセスIDを返します。』
と言う意味らしいのですが、それでもよく分からないんです。
ご教授願えませんか?

A 回答 (3件)

エラーコードから判断するに、Visual C++をお使いと思いますが、


これのライブラリには getppidやそれに類する関数はありません。

自分のプロセスIDではなく親のを使う目的が良くわかりませんが、

> sprintf(filename, TEMPFILE, temppath, getppid()); /* TmpFilenameGet*/

コメントからしても一時ファイルの名前を作るのに使っているようですから、
この一文を mktemp (_mktemp) に置きかえてしまえばよいのではないですか?

Windowsで親プロセスのIDを取得するのは面倒なので、
使わない方向に持っていったほうが良いと思います。

最後にご教授→ご教示です。
誤用にはお気をつけ下さりませ。

参考URL:http://msdn2.microsoft.com/ja-jp/library/34wc6k1 …
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2007/03/14 18:37

なんというか, Unix で動いていたものを Windows で動かそうとしているような感じがありありなんですが, 中間ファイルを

作りたいなら tmpnam か tmpfile を使うべきだと思います. getppid を使うのはあまり勧められないなぁ. セキュリティ上問題がありそうだし.
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2007/03/14 18:38

きっと、ヘッダファイルがインクルードされていないのでしょう。


ネットを調べる前に man getppid とかするのが早道。

すると <sys/types.h> と <unistd.h> をインクルードしろと書いてある。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2007/03/14 18:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!