IBM AIX Continuous Availability Features - IBM Redbooks
IBM AIX Continuous Availability Features - IBM Redbooks
IBM AIX Continuous Availability Features - IBM Redbooks
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
if (!strcmp(*(argv+1),"read")){<br />
if (rc=ukeyset_add_key(&ckeyset, ckey, UK_READ)){<br />
perror("main():ukeyset_add_key(ckeyset, ckey,UK_READ)");<br />
exit(1);<br />
}<br />
}else{<br />
if (rc=ukeyset_add_key(&ckeyset, ckey, UK_RW)){<br />
perror("main():ukeyset_add_key(ckeyset, ckey,UK_RW)");<br />
exit(1);<br />
}<br />
}<br />
}<br />
key=ftok("./ukey1.c",5);<br />
pid=fork();<br />
switch(pid){<br />
case (0):/* CHILD */<br />
sleep (1);<br />
if ((id=shmget(key, 0, 0))==-1){<br />
perror("child :shmget()");<br />
return (1);<br />
}<br />
if ( (data=shmat(id,(void *)0, 0)) == (char*) (-1) ){<br />
perror("child :shmat()");<br />
return (1);<br />
}<br />
printf("child:data=0x%x\n",data);<br />
if (rc=ukey_protect(data,one_page,ckey)){<br />
perror("child :ukey_protect(ckey)");<br />
exit(1);<br />
}<br />
oldset=ukeyset_activate(ckeyset,UKA_ADD_KEYS);<br />
if (oldset==UKSET_INVALID){<br />
printf("child :ukeyset_activate() failed");<br />
exit (1);<br />
}<br />
printf("child :READ1 =[%s]\n",data);<br />
strcpy(data+strlen(data),"abcd");<br />
printf("child :WRITE1=[abcd]\n");<br />
sleep(2);<br />
printf("child :READ2 =[%s]\n",data);<br />
strcpy(data+strlen(data),"efgh");<br />
printf("child :WRITE2=[efgh]\n");<br />
sleep(2);<br />
if (shmdt(data)==-1){<br />
perror("child :shmdt()");<br />
return (1);<br />
}<br />
return (0);<br />
case (-1):/* ERROR */<br />
perror("fork()");<br />
return (1);<br />
default:/* PARENT */<br />
one_page=4096;<br />
printf("parent:pagesize=%d\n", one_page);<br />
if ((id=shmget(key, one_page, IPC_CREAT|0644))==-1){<br />
104 <strong>IBM</strong> <strong>AIX</strong> <strong>Continuous</strong> <strong>Availability</strong> <strong>Features</strong>