- ベストアンサー
msgget()で指定するkey値について
solaris9上でメッセージキューを使用したCプログラム を作成するのですがmsgget関数で不明点があります。 尚、コンパイラはSUNのForte Cです。 int msgget(key_t key, int msgflg); 第一引数のkeyに指定する値ですが、サーバ内の開発 プログラム全体で重複しないようにするのは当然かと 思いますが、OSで予約されている番号とかあるので しょうか? 例えば 0~999:OSで使用 1000番以降:ユーザアプリで利用可 OSでもメッセージキューとか使用していると思うので 適当な番号を取ったらダメだろうなと思って色々調べた のですが解決する事ができませんでした。 すみませんがご教授の程よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
補足
早速のご回答ありがとうございます。 この基準ファイルですが、キー値を生成する為だけに 作成するファイルと考えてよろしいでしょうか? touch等で中身が無いファイルを作成して、テスト プログラムを作成してテストしてみましたところ 上記key1、key2で別のキー値がちゃんと拾えました。 現在運用中のシステムでmsgget()を使用している プログラムがあるのですが、なんとkey値を固定で define切って指定しており、ftokで取得している 形跡はまったくありませんでした。 作成者がいないので、なんでftokを使用しなかった のは不明ですが、これは明らかに危険な使用方法 かと思いますが、これについてご意見頂けませんで しょうか?