º»¹®/³»¿ë
return 0;
}
void handlesem(int semkey) {
int semid, pid ¡ë getpid();
if((semid ¡ë initsem(semkey)) [0) exit(1);
printf(`£Ü£Ünprocess p(semid);
printf(`process sleep(2);
printf(`process v(semid);
printf(`process exit(0);
}
void main() {
if(fork() ¡ë¡ë 0) handlesem(SEMKEY);
if(fork() ¡ë¡ë 0) handlesem(SEMKEY);
if(fork() ¡ë¡ë 0) handlesem(SEMKEY);
}
À§ÀÇ ¼Ò½º¿¡¼ initsem Àº ¼¼¸¶Æ÷¾î¸¦ ÃʱâÈ Çϰí, p ¿Í v ÇÔ¼ö´Â ¼¼¸¶Æ÷¾î ¿¬»êÀ» ¼öÇàÇÑ´Ù. ÀÌ ¼¼ °³ÀÇ ÇÔ¼ö´Â ¼·Î µ¶¸³ÀûÀ¸·Î ¼³°èµÇ¾î ÀÖ´Ù. À§¿¡¼ÀÇ handlesem °ú °°Àº ÇÔ¼ö¿¡¼´Â semkey ÀÇ °ªÀ» °¡Áö°í initsemÀ» ½ÇÇà½ÃÄÑ semid ¸¦ ¾ò°í, ÀÌ ÈÄ¿¡ p ¿Í v ÇÔ¼ö¸¦ ¼öÇàÇϰí ÀÖ´Ù. ½ÇÁ¦ÀÇ Äڵ忡¼µµ ÀÌ¿Í ºñ½ÁÇÑ ¸ð¾çÀ¸·Î »ç¿ëÀÌ µÉ °ÍÀÔ´Ï´Ù. main ¿¡¼´Â ¼¼ °³ÀÇ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÏ¿© µ¿ÀÏÇÑ handlesem ÇÔ¼ö¸¦ µ¿ÀÏÇÑ ¼¼¸¶Æ÷¾î ۸¦ »ç¿ëÇÏ¿© ½ÇÇà½Ã۰í ÀÖ´Ù. ÇÏÁö¸¸, fork ·Î »ý¼ºµÈ ÀÚ½Ä ÇÁ·Î¼¼½º´Â ºñ·Ï ÀÌÈÄÀÇ µ¿ÀÏÇÑ Äڵ带 ¼öÇàÇÏÁö¸¸ °¢ÀÚÀÇ µ¥ÀÌÅÍ ¿µ¿ªÀº °¢¡¦(»ý·«)