Подключение к БД как-то влияет на разделяемую память???
Oracle 9.2.0, Linux RH 7.2.
-------------------------------------------------------------------
int main(int argc, char* argv[])
{
Environment* env;
env = Environment::createEnvironment(Environment::OBJECT);
}
проходит нормально.
-------------------------------------------------------------------
int main(int argc, char* argv[])
{
int fp, i;
int id[5];
char *shm[5];
// подключение к RRP
if ( (fp = open ( "/tmp/shmem.dat",O_RDONLY)) == -1 ) return ( 2 );
read ( fp, id, sizeof ( id ));
read ( fp, shm, sizeof ( shm ));
close ( fp );
for ( i = 0; i < 5; i++ )
{
if ( shm[i] != shmat ( id[i], shm[i], 0 ) ) return ( 3 );
printf("\n id[%d] = %d, shm[%d] = %d", i, id[i], i, shm[i] );
}
}
-------------------------------------------------------------------
Тоже проходит нормально.
А когда вместе:
int main(int argc, char* argv[])
{
int fp, i;
int id[5];
char *shm[5];
Environment* env;
env = Environment::createEnvironment(Environment::OBJECT);
if ( (fp = open ( "/tmp/shmem.dat",O_RDONLY)) == -1 ) return ( 2 );
read ( fp, id, sizeof ( id ));
read ( fp, shm, sizeof ( shm ));
close ( fp );
for ( i = 0; i < 5; i++ )
{
if ( shm[i] != shmat ( id[i], shm[i], 0 ) ) return ( 3 );
printf("\n id[%d] = %d, shm[%d] = %d", i, id[i], i, shm[i] );
}
}
после запуска выводит 4-е строки, а на 5-ой
даёт: Segmentation fault.
------------------------------------------------------------------------
Получается, что createEnvironment как то влияет на SHARED MEM?
Подскажите хотябы где копать?