• 締切済み

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 というキーができました・・・ どうすればよいのでしょうか?

みんなの回答

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.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)はエラーになるはずですね。

関連するQ&A