Category Archives: 자주쓰는함수

usleep – 마이크로초 간격으로 실행을 일시중지한다.

1장.usleep(3)

차례
1.1절.사용법
1.2절.설명
1.3절.예제

마이크로초 간격으로 실행을 일시중지한다.


1.1절. 사용법

#include <unistd.h>voidusleep(unsigned long used);


1.2절. 설명

usleep() 함수는usec마이크로초동한 호출 프로세스의 실행을 일시 중지한다. sleep 의 마이크로 버젼이라고 볼수 있다.


1.3절. 예제

#include <unistd.h>#include <stdio.h>intmain(){    int i = 0;while(1)    {        printf("%d\n", i);        // 대략 1초 정도 쉰다.usleep(1000000);        i++;    }}

toupper – 문자를 대문자로 바꾼다.

1장.toupper(2)

차례
1.1절.사용법
1.2절.설명
1.3절.반환값
1.4절.예제

문자를 대문자로 바꾼다.


1.1절. 사용법

#include <ctype.h>inttoupper(int c);


1.2절. 설명

만일 가능하다면(주어진 c 가 소문자라면) 문자 c 를 대문자로 바꾼다. c 가 unsigned char 값이 아니거나 EOF 이면 함수의 행동을 예측할수 없다.


1.3절. 반환값

반환되는 값은 바뀐문자(대문자로) 이거나 바뀌지 않은 문자를 되돌려준다.


1.4절. 예제

#include <ctype.h>#include <stdio.h>#include <string.h>intmain(){    char buf[255];    int i;fgets(buf, 255, stdin);    for (i = 0; i <strlen(buf); i++)    {        buf[i] = toupper(buf[i]);    }fputs(buf, stdout);}
표준입력으로 받은 문자를 대문자로 변환한다음 표준출력으로 뿌려준다.
[root@localhost test]# ./toupper hello WorldHELLO WORLD

tolower – 문자를 대문자로 바꾼다.

1장.tolower(3)

차례
1.1절.사용법
1.2절.설명
1.3절.반환값
1.4절.예제

문자를 대문자로 바꾼다.


1.1절. 사용법

#include <ctype.h>inttolower(int c);


1.2절. 설명

만일 가능하다면(주어진 c 가 대문자라면) 문자 c 를 소문자로 바꾼다. c 가 unsigned char 값이 아니거나 EOF 이면 함수의 행동을 예측할수 없다.


1.3절. 반환값

반환되는 값은 바뀐문자(소문자로) 이거나 바뀌지 않은 문자를 되돌려준다.


1.4절. 예제

#include <ctype.h>#include <stdio.h>#include <string.h>intmain(){    char buf[255];    int i;fgets(buf, 255, stdin);    for (i = 0; i <strlen(buf); i++)    {        buf[i] = tolower(buf[i]);    }fputs(buf, stdout);}
표준입력으로 받은 문자를 대문자로 변환한다음 표준출력으로 뿌려준다.
[root@coco test]# ./tolowerHEllo World   hello world

tmpfile – 임시파일을 생성한다.

1장.tmpfile(3)

차례
1.1절.사용법
1.2절.설명
1.3절.반환값
1.4절.에러
1.5절.예제

임시파일을 생성한다.


1.1절. 사용법

#include <stdio.h>FILE *tmpfile (void);


1.2절. 설명

tmpfile()는 <stdio.h> 에 선언되어 있는P_tmpdir가 가르키는 임시저장디렉토리에 유일한 이름을 가지는 임시파일을 생성하고 해당파일을 가르키는 FILE 스트림을 되돌려준다. 이 파일은 binary read/write 모드로 열린다.P_tmpdir은 보통 /tmp 디렉토리를 가르키도록 되어 있다.

만약 유일한 파일이름을 얻는데 실패할경우에는 NULL 을 되돌려준다.


1.3절. 반환값

성공할경우 FILE 스트림을 되돌려준다. 실패할경우에는 NULL 을 되돌려준다.


1.4절. 에러

EACCES

임시파일을 만들 디렉토리에 대한 접근권한이 없다.

EEXIST

유일한 파일이름을 만들수 없다.

EMFILE

프로세스에 의해서 너무 많은 파일이 열려있다.

ENFILE

시스템에 의해서 너무 많은 파일이 열려있다.

EROFS

읽기전용의 파일시스템이다.


1.5절. 예제

#include <stdlib.h>#include <stdio.h>#include <string.h>intmain(){    FILE *tmpfp;    char buf[80];    // 임시파일을 생성한다.    if ((tmpfp =tmpfile()) == NULL)    {perror("tmp create error : ");exit(0);    }fputs("hello world",tmpfp);fseek(tmpfp, 0, SEEK_SET);fgets(buf, 80, tmpfp);    printf("buf : %s\n", buf);    return 1;}

sigemptyset – 시그널 관련 조작

1장.sigemptyset(2)

시그널 관련 조작


1.1. 사용법

#include <signal.h>intsigemptyset(sigset_t *set);intsigfillset(sigset_t *set);intsigaddset(sigset_t *set, int signum);intsigdelset(sigset_t *set, int signum)


1.2. 설명

sigemptyset함수는 인자로 주어진 시그널 셋인set에 포함되어 있는 모든 시그널을 비운다.

sigfillset는set에 포함된 모든 시그널을 채운다.

sigaddset과 sigdelset는set로 부터 시그널 번호가signum인 시그널을 추가하거나 삭제한다.


1.3. 반환값

성공할 경우 0실패할 경우 -1을 리턴한다.


1.4. 에러

EINVAL

잘못된 시그널 번호를 사용했다.


1.5. 예제

#include <signal.h> #include <unistd.h> #include <string.h> #include <stdio.h> voidsig_int(int signo);voidsig_usr(int signo);intmain(){    int i = 0;    struct sigaction intsig, usrsig;    usrsig.sa_handler = sig_usr;sigemptyset(&usrsig.sa_mask);    usrsig.sa_flags = 0;    intsig.sa_handler = sig_int;sigemptyset(&intsig.sa_mask);    intsig.sa_flags = 0;    if (sigaction(SIGINT, &intsig, 0) == -1)    {        printf ("signal(SIGINT) error");        return -1;    }        if (sigaction(SIGUSR2, &usrsig, 0) == -1)    {        printf ("signal(SIGUSR2) error");        return -1;    }while(1)    {        printf("%d\n", i);        i++;sleep(1);    }}voidsig_int(int signo){    sigset_t sigset, oldset;sigfillset(&sigset);    if (sigprocmask(SIG_BLOCK, &sigset, &oldset) < 0)    {        printf("sigprocmask %d error \n", signo);    }    fprintf(stderr, "SIGINT !!!!\n");sleep(5);}voidsig_usr(int signo){printf("sig_usr2\n");}