Esempio n. 1
0
int SLang_init_tty(int abort_char, int dum2, int dum3)
{
  VIOCURSORINFO cursorInfo, OldcursorInfo;

  (void) dum2; (void) dum3;
   if (abort_char == -1) abort_char = 3;   /* ^C */
   SLang_Abort_Char = abort_char;
   SLKeyBoard_Quit = 0;

  /*  set ^C off */
  signal (SIGINT, SIG_IGN);
  signal (SIGBREAK, SIG_IGN);

  /* set up the keyboard */

  initialKbdInfo.cb = sizeof(initialKbdInfo);
  KbdGetStatus(&initialKbdInfo, 0);
  set_kbd();

  /* open a semaphore */
  CreateSem();

  /* start a separate thread to read the keyboard */
#if defined(__BORLANDC__)
  SLos2_threadID = _beginthread (thread_code, 8096, NULL);
#else
  SLos2_threadID = _beginthread (thread_code, NULL,  8096, NULL);
#endif

   if ((int)SLos2_threadID == -1)
     {
	SLang_exit_error ("init_tty: Error starting keyboard thread.");
     }

  VioGetCurType (&OldcursorInfo, 0);
  cursorInfo.yStart = 1;
  cursorInfo.cEnd = 15;
  cursorInfo.cx = 1;
  cursorInfo.attr = 1;
  if (VioSetCurType (&cursorInfo, 0))
    VioSetCurType (&OldcursorInfo, 0);   /* reset to previous value */

  return 0;
}
Esempio n. 2
0
int main(void)
{
	key_t key;									/*信号量的键值*/
	int semid;									/*信号量的ID*/
	char i;
	int value = 0;
	
	key = ftok("/ipc/sem",'a');					/*建立信号量的键值*/
	
	semid = CreateSem(key,100);					/*建立信号量*/
	for (i = 0;i <= 3;i++){						/*对信号量进行3次增减操作*/
		Sem_P(semid);							/*增加信号量*/
		Sem_V(semid);							/*减小信号量*/
	}
	value = GetvalueSem(semid);					/*获得信号量的值*/
	printf("信号量值为:%d\n",value);				/*打印结果*/
	
	DestroySem(semid);							/*销毁信号量*/
	return 0;
}