ファイルを読み取って各行を共有メモリに入れようとしています (はい、これが最も実用的な方法ではないことはわかっていますが、共有メモリを使用する必要があるとだけ言っておきましょう)。共有メモリ内の特定の行にすばやくジャンプできるように、これらの行を共有メモリに読み込むことはできますか?
たとえば、私のファイルが次の場合:
ABCD
EFGH
IJKL
「IJKL」を取得するために、共有メモリの 3 行目に直接ジャンプできますか?
現在、次のようにメモリに読み込んでいます。
key_t key; /* key to be passed to shmget() */
int shmflg; /* shmflg to be passed to shmget() */
int shmid; /* return value from shmget() */
int size; /* size to be passed to shmget() */
char *shm, *s;
// we'll name our shared memory segment: 1234
key = 1234;
if((shmid = shmget(key,size, S_IRUSR | S_IWUSR)) < 0){
perror("shmget failed");
exit(1);
}
// attach the segment to our data space
if((shm = shmat(shmid, NULL, 0)) == (char*) -1){
perror("shmat failed");
exit(1);
}
s = shm;
// note: line is a character array that's large enough to include the whole file
while(fgets(line, 128, fp) != NULL){
// try putting the line into our shared memory:
sprintf(s, line);
}