#include <sys/sem.h>
#include <sys/ipc.h>
#include <stdio.h>
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
}
main()
{
int semid;
semid=semget(IPC_PRIVATE,2,IPC_CREAT|0666);
union semun sem,sem2;
sem.val=1;
sem2.val=0;
semctl(semid,0,SETVAL,sem);
semctl(semid,1,SETVAL,sem2);
if(fork()==0)
{int i;
struct sembuf sops={0,+1,IPC_NOWAIT},sops2={1,-1,IPC_NOWAIT};
for(i=0;i <1000;i++)
{
semop(semid,&sops,1);
printf("a\n");
semop(semid,&sops2,1);
}
}
else
{
int j;
struct sembuf sops={0,-1,IPC_NOWAIT},sops2={1,+1,IPC_NOWAIT};
for(j=0;j <1000;j++)
{
semop(semid,&sops2,1);
printf("b\n");
semop(semid,&sops,1);
}
}
}
ÏëҪʵÏÖababababµÄÊä³ö£¬¿ÉÊǺÃÏñ²»ÐУ¬½á¹ûÊÇÏÈÊä³öa£¬ÔÚÊä³öb,ÄÄÀï²»¶ÔÂð£¬ÇëÎÊÒ»ÏÂ
²»¼Ó¿ØÖƾÍÊÇËæ»úµÄ
¿ÉÊÇÎÒÒѾÓÃÐźÅÁ¿¼¯À´¿ØÖÆÁ˰¡£¬ÊDz»ÊÇÄǼ¸¸öPVº¯ÊýÓôíÁ˰¡£¬ÎÒ²»´ó»áÓÃ
#include <sys/sem.h>
#include <sys/ipc.h>
#include <stdio.h>
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
}
main()
{
int semid;
semid=semget(IPC_PRIVATE,2,IPC_CREAT|0666);
union semun sem,sem2;
sem.val=0;
´ó¼ÒºÃ£¬±¾ÈËĿǰ¸Õ¸Õ½Ó´¥Linux¡£ÏÖÔÚ¹«Ë¾µÄÏîÄ¿ÐèÒªËõ¼õLinuxµÄKernelºÍAPP²¿·ÖµÄCode Size¡£Ä¿Ç°ÎÒÃÇʹÓõÄÊÇLinux2.6.22.15°æ±¾£¬Ó¦ÓÃÓÚADSL Modem£¨¼ÒÍ¥Íø¹Ø£©¡£
1.ÎÒÃDzúÆ·Ó¦ÓÃÊÇADSL Gateway£¬Kernel²¿ ......
ÎÒûÓа²×°²Ù×÷ϵͳµÄ¾Ñ飬¼´Ê¹ÊÇWINDOWS¡£ÏÖÔÚÏëÔÚLINUX²Ù×÷ϵͳ´ó»·¾³ÏÂѧCÓïÑÔ£¬ÓÖÒªÂò±¾±¾£¬ÇëÎÊÈç¹û²Ù×÷ϵͳ°²×°²»µ±£¬»á²»»á¶ÔµçÄÔÔì³Éʲô´óµÄÆÆ»µ£¿ÓÐûÓбØÒªÏÈÂòÒ»¸ö¶þÊÖµçÄÔÁ·Ò»ÏÂLINUXµÄ ......