こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ftokが動かない?

Linux or Solaris + Cで開発しています。

msgget()で使用するため、
ftok()でキー作成したいのですが、
ftok("/export/home/aaa.txt",100);
とすると 100 というキーができます。
ftok("/export/home/aaa.txt",90);
とすると 90 というキーができます。
aaa.txtというファイルはちゃんと存在しています。

全く第1引数が効いていないようなのですが、原因は何でしょうか?
試しに
ftok(NULL,90);
としても 90 というキーができました・・・

どうすればよいのでしょうか?

投稿日時 - 2005-11-18 15:02:43

QNo.1786661

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

Debian Linux Kernel 2.6.12-1-686
gcc version 4.0.2 (Debian 4.0.2-2)
で、

# include <stdio.h>
# include <errno.h>
# include <sys/types.h>
# include <sys/ipc.h>

int main(void)
{
key_t key;

key = ftok("/tmp/tmp.c", 100);
printf("key =%d, errno = %d\n", key,errno);

key = ftok("/tmp/tmp.c", 90);
printf("key =%d, errno = %d\n", key,errno);

key = ftok(NULL, 90);
printf("key =%d, errno = %d\n", key,errno);
}
を実行し、
key =1677819930, errno = 0
key =1510047770, errno = 0
key =-1, errno = 14
となりました。
具体的な使用システムは何でしょうか?
少なくとも、ftok(NULL, 90)はエラーになるはずですね。

投稿日時 - 2005-11-18 15:41:58

あなたにオススメの質問