linux man page : sigwaitinfo - ´ë±â¿­ÀÇ ½Ã±×³ÎÀ» ±â´Ù¸°´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
Docbook ¿ø¹®

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=sigwaitinfo">sigwaitinfo</a>(2)

1장. sigwaitinfo(2)

차례
1.1절. »ç¿ë¹ý
1.2절. ¼³¸í
1.3절. ¹Ýȯ°ª
1.4절. ¿¡·¯
1.5절. ¿¹Á¦
1.6절. Âü°í¹®Çå

´ë±â¿­ÀÇ ½Ã±×³ÎÀ» µ¿±âÀûÀ¸·Î ±â´Ù¸°´Ù.


1.1절. »ç¿ë¹ý

#include <signal.h>

int sigwaitinfo(const sigset_t *set, siginfo_t *info);
int sigtimedwait(const  sigset_t  *set,  siginfo_t  *info,
                 const struct timespec timeout);
		


1.2절. ¼³¸í

sigwaitinfo()´Â ½Ã±×³Î ¼Âset¿¡ ¼³Á¤µÈ ½Ã±×³ÎÁß Çϳª°¡ Àü´ÞµÉ ¶§±îÁö ´ë±âÇÑ´Ù. ¼³Á¤µÈ ½Ã±×³Î Áß Çϳª°¡ Àü´ÞµÇ¸é Áï½Ã ¸®ÅÏÇÑ´Ù. ¸¸¾à info°¡ NULLÀÌ ¾Æ´Ï¶ó¸é ½Ã±×³Î °ü·Ã Á¤º¸¸¦ ä¿öÁØ´Ù.

sigtimedwait()´Â timeout¸¸Å­ ½ÅÈ£¸¦ ±â´Ù¸®´Ù°¡ ½ÅÈ£°¡ ¾øÀ» °æ¿ì ¸®ÅÏÇÑ´Ù´Â °É Á¦¿ÜÇϰí´Â sigwaitinfo()¿Í µ¿ÀÏÇÏ´Ù.

struct timespec 
{
    long    tv_sec;         /* seconds */
    long    tv_nsec;        /* nanoseconds */
}
		

´ÙÀ½Àº info±¸Á¶Ã¼¿¡ Á¤ÀÇµÈ ¸â¹ö º¯¼öµéÀÌ´Ù.

typedef struct siginfo {
   int si_signo;     /* Signal number */
   int si_errno;     /* Error code */
   int si_code;                                                    
   pid_t si_pid;
   uid_t si_uid;
   void *si_addr;
   union sigval si_value;
   union {                                                        
      /* Skipping other fields */
      struct {
         int _band;  /* Socket event flags (similar to poll) */   
         int _fd;    /* Socket fd where event occurred */          
      } _sigpoll;                                      
   } _sifields;                                        
}  siginfo_t;                                        
                                                          
#define si_fd     _sifields._sigpoll._fd                  
		


1.3절. ¹Ýȯ°ª

¼º°øÇÒ °æ¿ì sigwaitinfo(), sigtimedwait()¸ðµÎ ½Ã±×³Î ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. ½ÇÆÐÇßÀ» °æ¿ì -1À» ¸®ÅÏÇÑ´Ù.


1.4절. ¿¡·¯

EAGIN

sigtimedwait()¿¡¼­ timeoutµ¿¾È ¾Æ¹«·± ½ÅÈ£°¡ Àü´ÞµÇÁö ¾Ê¾ÒÀ» ¤Å¤·¿ì

EINVAL

timeout°¡ À߸ø ¼³Á¤µÇ¾ú´Ù.

EINTR

½Ã±×³Î Çڵ鷯¿¡ ÀÇÇØ¼­ ÀÎÅÍ·´Æ®°¡ °É·È´Ù.


1.5절. ¿¹Á¦

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

int main()
{
    struct sigaction sigact;
    siginfo_t info;
    int signo;
    printf("My pid %d\n", getpid());
    sigemptyset(&sigact.sa_mask);
    sigaddset(&sigact.sa_mask, SIGUSR2);
    while(1)
    {
        signo = sigwaitinfo(&sigact.sa_mask, &info);
        printf("%d : %d\n", signo, info.si_pid);
    }
}
		
À§ ÇÁ·Î±×·¥Àº SIGUSR2°¡ Àü´ÞµÇ´Â°É ±â´Ù¸°´Ù. ¸¸¾à SIGUSR2 ½Ã±×³ÎÀ» ¹Þ´Â´Ù¸é ½Ã±×³ÎÀ» Àü´ÞÇÑ ÇÁ·Î¼¼½ºÀÇ PID¸¦ Ãâ·ÂÇÑ´Ù.

¾Æ·¡ ÇÁ·Î±×·¥Àº À§ÀÇ ¿¹Á¦¸¦ Å×½ºÆ® Çϱâ À§ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÀÎÀÚ·Î SIGUSR2 ½Ã±×³ÎÀ» ¹ÞÀ» PID¸¦ ÁöÁ¤ÇÑ´Ù. ½Ã±×³ÎÀ» ¹ÞÀº ÇÁ·Î±×·¥ Ãø¿¡¼­ ½Ã±×³ÎÀ» º¸³½ ÇÁ·Î¼¼½ºÀÇ PID¸¦ ¾ò¾î¿À´ÂÁö È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ.

#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    int pid = atoi(argv[1]);
    printf("%d\n", getpid());
    while(1)
    {
        kill(pid, SIGUSR2);
        sleep(1);
        printf("OK SIG\n");
    }
}
		

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.