콘텐츠로 건너뛰기

ubuntu

[리눅스] C언어 타이머(Timer) 사용법 및 예제!!

리눅스 C언어 타이머 사용법입니다

아래의 createTimer 함수를 호출만 하면 됩니다

간단히 주석도 달았으니 참고 하시면 될듯합니다

#include <unistd.h>
#include <time.h>
#include <signal.h>
#include <stdio.h>
 
// 타이머 주기에 따라 호출될 타이머
void timer()
{
    printf("timer\n");
}
 
int createTimer( timer_t *timerID, int sec, int msec )  
{  
    struct sigevent         te;  
    struct itimerspec       its;  
    struct sigaction        sa;  
    int                     sigNo = SIGRTMIN;  
   
    /* Set up signal handler. */  
    sa.sa_flags = SA_SIGINFO;  
    sa.sa_sigaction = timer;     // 타이머 호출시 호출할 함수 
    sigemptyset(&sa.sa_mask);  
  
    if (sigaction(sigNo, &sa, NULL) == -1)  
    {  
        printf("sigaction error\n");
        return -1;  
    }  
   
    /* Set and enable alarm */  
    te.sigev_notify = SIGEV_SIGNAL;  
    te.sigev_signo = sigNo;  
    te.sigev_value.sival_ptr = timerID;  
    timer_create(CLOCK_REALTIME, &te, timerID);  
   
    its.it_interval.tv_sec = sec;
    its.it_interval.tv_nsec = msec * 1000000;  
    its.it_value.tv_sec = sec;
    
    its.it_value.tv_nsec = msec * 1000000;
    timer_settime(*timerID, 0, &its, NULL);  
   
    return 0;  
}
 
int main()
{
    timer_t timerID;
    
    // 타이머를 만든다
    // 매개변수 1 : 타이머 변수
    // 매개변수 2 : second
    // 매개변수 3 : ms
    createTimer(&timerID,5, 0);
    
    while(1)
    {
        
    }
    
}

실행화면입니다

5초 주기로 타이머가 실행됩니다

컴파일시 -lrt 옵션을 주어야 에러 없이 빌드가 됩니다

[리눅스] 파일 내용에서 원하는 문자열 찾기!!

리눅스에서 파일안의 내용으로 검색하고 싶을때 아래와 같이 사용하시면 됩니다

grep [옵션] ['찾을 문자열'] [검색할 파일]
grep -r 'sinwho' *
 
옵션 -r : 하위 디렉토리 까지 검색
     -n : 찾는 문자열을 줄위치

[리눅스] C언어 쓰레드(Thread) 사용법 및 예제!

// 쓰레드 변수 선언
pthread_t firstThread;
int threadErr;

// 쓰레드 동작시 실행될 함수
void *threadRun()
{
printf(“start Thread”);
}

// 쓰레드를 만들고 쓰레드 함수 실행
if(threadErr = pthread_create(&firstThread,NULL,threadRun,NULL))
{
// 에러시 에러 출력
printf(“Thread Err = %d”,threadErr);
}

그리고 빌드시 옵션에 -pthread를 주고 빌드 하시면 됩니다
밑은 간단한 사용예제입니다

#include <stdio.h>
#include <pthread.h>
#include <time.h>
 
 
// 쓰레드 동작시 실행될 함수
void *firstThreadRun()
{
    while(1)
    {
        sleep(1);
        printf("start First Thread\n");
    }
}
 
void *secondThreadRun()
{
    while(1)
    {
        sleep(3);
        printf("start Second Thread\n");
    }
}
 
int main()
{
    pthread_t firstThread, seconThread;
    int threadErr;
    
    
    // 쓰레드를 만들고 쓰레드 함수 실행
    if(threadErr = pthread_create(&firstThread,NULL,firstThreadRun,NULL))
    {
        // 에러시 에러 출력
        printf("Thread Err = %d",threadErr);
    }
    
    if(threadErr = pthread_create(&seconThread,NULL,secondThreadRun,NULL))
    {
        // 에러시 에러 출력
        printf("Thread Err = %d",threadErr);
    }
    
    while(1);
    
}

컴파일 방법과 간단한 예제 실행 결과입니다
컴파일 하실때 -pthread 옵션 주시는거 잊지마세요~