... after unplugging the computer and plugging it back in, I realised I
messed up on apr0_shm_remove. Here's the corrected version:
static int apr0_shm_remove (const char *shfile, apr_pool_t *p) {
int ret;
apr_shm_t* shmem = NULL;
if((ret = apr_shm_attach(&shmem, shfile, p)) != APR_SUCCESS) {
if(APR_STATUS_IS_EINVAL(ret) || APR_STATUS_IS_ENOENT(ret)) {
ret = apr_file_remove(shfile, p);
if(APR_STATUS_IS_ENOENT(ret)) {
return APR_SUCCESS;
} else {
return ret;
}
}
return ret;
} else {
return apr_shm_destroy(shmem);
}
}
Cheers,
Tyler
Tyler MacDonald <[EMAIL PROTECTED]> wrote:
> > > apr_shm_remove()! :)
>
> ... not under apr-0 unfortunately, but I've worked around it. :-)
>
> > I'm guessing other processes could still write to the shared memory under
> > the SysV model (since the file is just a pointer to a memory address), what
> > about under mmap?
>
> Here's what I've come up with. Check out new_shmem_segment() and
> apr0_shm_remove() and let me know what you think.
>
> Thanks,
> Tyler