■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 最新50

プログラマが2chを救う!?2

513 :デフォルトの名無しさん :01/08/28 02:24 ID:6S1uJJBo
Content-Length吐き出しってこんな感じか......っていうかLinuxで
shm_open()とかあるか不安なんだけど......ンラ坊でスマソ
----------------------------------------------------------------------
#include <sys/mman.h>

#define SHM_NAME "/read.cgi"

int zz_tmpfd = -1; /* グローバル変数...スマソ */

   :

if ((zz_tmpfd=shm_open(SHM_NAME, O_RDWR|O_CREAT, 0600)) == -1) {...} /* err */
if ((pStdout=gzdopen(dup(zz_tmpfd), "wb")) == NULL) {...} /* err */

   : /* pPrintf()実行 */

size_t content_length;
void *mmptr;
gzclose(pStdout); pStdout = stdout;
content_length = lseek(zz_tmpfd, 0, SEEK_END);

if ((mmptr=mmap(NULL, content_length, PROT_READ, MAP_SHARED, zz_tmpfd, 0)) == NULL) {...} /* err */
printf("Content-Length: %lu\n\n", (u_long)content_length);
write(1, mmptr, content_length);
munmap(mmptr, content_length);
----------------------------------------------------------------------
で終了処理は
if (pStdout != NULL && pStdout != stdout) gzclose(pStdout);
if (zz_tmpfd != -1) close(zz_tmpfd);
shm_unlink(SHM_NAME);

Solarisだと"LDFLAGS += -lrt"なんだけど......役に立たぬかも...

272KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30