Joinc 팀블로그 리눅스 메뉴얼 정리 Joinc 위키
댓글

Recent Comments

Powered by Disqus
팀블로그 카테고리
  전체 (1105)
   공지사항 (1)
   검색엔진 (21)
   기술동향 (58)
   게임 (2)
   독서 (6)
   리눅스 (12)
   보안 (1)
   사회문제 (22)
   어셈블리 (43)
   영화 (3)
   오픈소스 (10)
   음악 (9)
   인물 (1)
   포인터 (4)
   프로그래머 (23)
   팀블로그 (20)
   테터툴즈 (29)
   C/C++ (152)
   FireFox (11)
   Gimp (2)
   Google (98)
   Java (13)
   Perl (2)
   Pthread (11)
   STL (13)
   TCP/IP (8)
   Tools (31)
   Web2.0 (42)
   Wiki (1)
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
2008/01/15 10:27

linux man page - fopen : 파일 stream을 오픈한다.


1장. fopen(3)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제
1.6. 참고문헌

파일로 부터 스트림을 생성한다.


1.1. 사용법

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);


1.2. 설명


1.3. 반환값


fopen 은 종종 open(2) 함수와 비교되어서 설명된다. byte 단위로 열린파일을 다루는 open 과는 달리 fopen 는 stream 단위로 열린파일의 데이타를 다룬다. 즉 fopen 은 자체적으로 버퍼를 관리함으로써, 함수 사용자가 저수준에서 다루어야할 많은 것들을 대신 해결해 줌으로 좀더 쉽게 사용할수 있다.

path 에 지정된 파일을 mode 에 주어진 모드로 연다.

이 함수는 fputs(3), fgets(3), ungetc(3), getc(3) 등과 같이 쓰이며 표준 I/O(입출력) 함수라고 부른다.

다음과 같은 mode 를 path 에 대해서 지정해줄수 있다.

r

파일을 읽기 전용으로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

r+

파일을 읽기/쓰기로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

w

쓰기전용의 파일을 열기 위해서 사용된다. 열린 파일크기는 0 이되며, stream 포인터의 위치는 파일의 시작위치를 가리킨다.

w+

파일을 읽기/쓰기로 연다. 파일이 이미 존재한다면, 파일의 크기는 0이 된다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a

쓰기위해서 파일을 연다. 파일이 존재하지 않는다면 새로 생성한다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a+

파일을 읽기/쓰기로 연다. 파일이 존재하지 않는다면 새로생성한다. stream 포인터의 위치는 파일을 끝을 가리킨다.

fdopen(3)함수는 파일지정자 fildes로 부터 스트림을 얻어온다. mode는 fopen에 사용하는 것들을 그대로 사용할 수 있다. 그렇지만 파일지정자의 mode와 조화를 이룰 수 있어야 한다.

freopen(3)함수는 streampath파일과 연결 한다. 이때 최초의 stream은 닫히게 된다. mode는 fopen에서 사용하는 것과 동일하다. 이함수는 stderr, stdin, stdout 등을 파일과 연결시키고자 할때 주로 사용한다.


1.4. 에러

EINVAL

잘못된 mode를 지정했을 경우

이 외의 에러는 open(2)와 동일하다.

1.5. 예제

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

int main(int argc, char **argv)
{
FILE *fp;

fp = fopen("/home/test/test.txt", "r");
if (fp == NULL)
{
perror("File open error: ");
exit(0);
}
// 표준 I/O 함수를 이용한 여러가지 작업을 한다.

fclose(fp);
return 0;
}


1.6. 참고문헌

  1. open(2)

  2. fopen(3)

  3. fileno(3)

  4. stdio.h 사용하기

:::
2007/11/28 11:39

linux man page : fopen - 파일로 부터 슽트림을 생성한다.

1장. fopen(3)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 에러
1.5. 예제
1.6. 참고문헌

파일로 부터 스트림을 생성한다.


1.1. 사용법

#include <stdio.h>

FILE *fopen(const char *path, const char *mode);
FILE *fdopen(int fildes, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);


1.2. 설명


1.3. 반환값

fopen 은 종종 open(2) 함수와 비교되어서 설명된다. byte 단위로 열린파일을 다루는 open 과는 달리 fopen 는 stream 단위로 열린파일의 데이타를 다룬다. 즉 fopen 은 자체적으로 버퍼를 관리함으로써, 함수 사용자가 저수준에서 다루어야할 많은 것들을 대신 해결해 줌으로 좀더 쉽게 사용할수 있다.

path 에 지정된 파일을 mode 에 주어진 모드로 연다.

이 함수는 fputs(3), fgets(3), ungetc(3), getc(3) 등과 같이 쓰이며 표준 I/O(입출력) 함수라고 부른다.

다음과 같은 mode 를 path 에 대해서 지정해줄수 있다.

r

파일을 읽기 전용으로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

r+

파일을 읽기/쓰기로 연다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

w

쓰기전용의 파일을 열기 위해서 사용된다. 열린 파일크기는 0 이되며, stream 포인터의 위치는 파일의 시작위치를 가리킨다.

w+

파일을 읽기/쓰기로 연다. 파일이 이미 존재한다면, 파일의 크기는 0이 된다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a

쓰기위해서 파일을 연다. 파일이 존재하지 않는다면 새로 생성한다. stream 포인터의 위치는 파일의 시작위치를 가리킨다.

a+

파일을 읽기/쓰기로 연다. 파일이 존재하지 않는다면 새로생성한다. stream 포인터의 위치는 파일을 끝을 가리킨다.

fdopen(3)함수는 파일지정자 fildes로 부터 스트림을 얻어온다. mode는 fopen에 사용하는 것들을 그대로 사용할 수 있다. 그렇지만 파일지정자의 mode와 조화를 이룰 수 있어야 한다.

freopen(3)함수는 streampath파일과 연결 한다. 이때 최초의 stream은 닫히게 된다. mode는 fopen에서 사용하는 것과 동일하다. 이함수는 stderr, stdin, stdout 등을 파일과 연결시키고자 할때 주로 사용한다.


1.4. 에러

EINVAL

잘못된 mode를 지정했을 경우

이 외의 에러는 open(2)와 동일하다.

1.5. 예제

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

int main(int argc, char **argv)
{
FILE *fp;

fp = fopen("/home/test/test.txt", "r");
if (fp == NULL)
{
perror("File open error: ");
exit(0);
}
// 표준 I/O 함수를 이용한 여러가지 작업을 한다.

fclose(fp);
return 0;
}


1.6. 참고문헌

  1. open(2)

  2. fopen(3)

  3. fileno(3)

  4. stdio.h 사용하기

:::
2007/11/26 10:22

linux man page : fgets - 열린 파일 스트림으로 부터 문자열을 입력받는다.

1장. fgets(3)

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

열린 파일 스트림으로 부터 문자열을 입력받는다.


1.1절. 사용법

#include <stdio.h> 


char *fgets(char *s, int size, FILE *stream);


1.2절. 설명

fgets 는 최대크기가 size 이하의 문자를 stream 으로 부터 읽어서 s 에 저장한다. 이때 stream 은 fopen(3)으로 만든 파일스트림이 될것이다.

fgets 는 비록 최대크기 size 이하 만큼을 stream 으로 부터 읽지만, 중간에 EOF 혹은 개행문자("\n") 를 만나면 읽기를 멈춘다.

버퍼에 대한 쓰기를 다했다면 fgets 는 buf 의 마지막 다음문자를 '\0'로 변경한다.


1.3절. 반환값

성공할경우 문자열의 포인터 s 를 반환한다. 에러가 발생하거나 파일의 마지막에 도달했을경우, 또는 아무런 문자를 입력받지 못한경우에는 NULL 을 반환한다.


1.4절. 예제

#include <stdio.h>

#include <string.h>
#include <unistd.h>

int main(int argc, char **argv)
{
FILE *fp_stdin;
FILE *fp_out;

char buf_in[255];

if (argc != 2)
{
printf("Usage : ./line_edit [저장파일이름]\n");
exit(0);
}

if (access(argv[1], F_OK) == 0)
{
printf("이미 파일이 존재하고 있음 : %s\n", argv[1]);
exit(0);
}

fp_out = fopen(argv[1], "w");
if (fp_out == NULL)
{
perror("file open error 1 : ");
exit(0);
}

while(fgets(buf_in, 255, stdin) != NULL)
{
if ( strncmp(buf_in,"quit\n", 5) == 0)
break;
fputs(buf_in, fp_out);
}

fclose(fp_out);
}
위 예제는 표준입력 stdin로 부터 문자열을 읽어들여서 아규먼트로 주어진 파일로 저장하는 일을하는 프로그램이다. 이 프로그램은 Ctrl+D 나 "quit" 를 만나기 전까지 계속실행하면서 표준입력으로 읽은 문자열을 fgets 를 통해서 파일로 쓴다.

:::
2007/11/21 11:06

linux man page : fgetc - 입력스트림으로 부터 문자 하나를 읽어들인다.

1장. fgetc(3)

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

단일 문자를 입력받는다.


1.1절. 사용법

#include <stdio.h>

int fgetc(FILE *stream);


1.2절. 설명

stream 가 가리키는 문자를 읽어서 원래 데이터형인 unsigned char 를 int 로 변환하여 값을 되돌려준다. 파일 끝에 도달했을경우 EOF 를 반환한다.


1.3절. 반환값

읽어들인 unsigned char 문자를 int로 변환한다음 되돌려준다. 파일 끝에 도달했을경우에는 EOF 를, 에러가 발생했을경우에는 에러를 반환한다.


1.4절. 예제

#include <stdio.h>

#include <string.h>

int main()
{
int ch;
while ((ch = fgetc(stdin)) != EOF)
{
printf("%c", ch);
}

return 1;
}
표준입력으로 부터 문자를 읽어들여서 출력한다. EOF(Ctrl+D)를 만나면 종료한다.

:::
2007/11/12 13:00

linux man page : feof - 스트림 상태를 검사하고 리셋한다.


1장. feof(3)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 에러
1.4절. 예제
1.5절. 참고문헌

스트림 상태를 검사하고 리셋한다.


1.1절. 사용법

#include <stdio.h>

void clearerr( FILE *stream);
int feof( FILE *stream);
int ferror( FILE *stream);
int fileno( FILE *stream);


1.2절. 설명

clearerr()함수는 EOF를 지우고 stream를 위한 에러 지시자는 스트림이 가리킨다.

feof()함수는 stream이 가리키는 스트림이 EOF인지를 검사하고, 만약 EOF라면 0이 아닌 값을 반환한다. EOF는 clearerr()함수에 의해서만 지워질 수 있다.

ferror()함수는 stream이 가리키는 스트림의 에러 지시자를 검사하고, 만약 에러가 설정되어 있다면 0이 아닌 값을 반환한다. 에러지시자는 clearerr()함수에 의해서만 지워질 수 있다.

fileno()함수는 stream에 대한 정수형의 파일 지정자를 반환한다.


1.3절. 에러

이들 함수는 실패해서는 안되며 errno를 설정하지 않는다.


1.4절. 예제

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = NULL;
char buf[256];

if ((fp = fopen("zombie.c", "r")) == NULL)
{
perror("file open error ");
exit(0);
}

while(!feof(fp))
{
memset(buf, 0x00, 256);
fgets(buf, 255, fp);
printf("%s", buf);
}
printf("File no : %d\n",fileno(fp));
fclose(fp);
}


1.5절. 참고문헌

  1. 파일객체에 대해서

  2. open(2)

  3. stdio(3)

:::
2007/11/01 15:57

linux man page : exit - 프로세스를 종료시킨다.

1장. exit(3)

차례
1.1. 사용법
1.2. 설명
1.3. 반환값
1.4. 주목
1.5. 예제
1.6. 참고문헌

프로그램을 정상 종료 시킨다.


1.1. 사용법

#include <stdlib.h>

void exit(int status);


1.2. 설명

exit()함수는 프로그램을 정상종료 시키며, 이때 종료 값으로 status를 부모프로세스에 status & 0377 로넘겨준다. 부모 프로세스는 wait(2)를 이용해서 자식 프로세스의 종료값을 읽어 올 수 있다. exit()가 호출되면 atexit()와 on_exit()에 의해서 등록된 함수들이 먼저 실행된다. 그 후 모든 열린 스트림을 비우고(flush) 닫는다. tmpfile()에 의해서 생성된 임시파일도 이때 삭제된다.

표준 C에서는 exit()의 종료값을 위해서 EXIT_SUCCESSEXIT_FAILURE를 준비해두고 있다.


1.3. 반환값

아무것도 리턴하지 않는다.


1.4. 주목

exit가 진행되는 동안 atexit()와 on_exit()에 의해서 등록된 함수들이 있다면 이들을 모두 실행한다. 등록된 함수들은 (스택형태로) 가장 마지막에 등록된 함수를 가져와서 실행된다. 만약 exit 과정중에 longjmp()등이 호출된다면 어떠한 일이 일어날지 예측할 수 없다.

EXIT_SUCCESS 와 EXIT_FAILURE 는 종료값을 간단하고 명확하게 결정하기 위해서 사용한다. EXIT_SUCCESS는 프로그램이 주어진 일을 정상적으로 수행했음을 EXIT_FAILURE는 정상적으로 수행하지 않았음을 알려주기 위해서 사용한다. 물론 프로그램에 따라서 다양한 종료값을 리턴할 수도 있으며, 이것은 프로그램개발자의 정책에 의존적이 된다. 보통 0을 정상 수행, 그렇지 않은 경우를 비정상 수행(에러)로 정의한다.

exit()가 수행되면서 발생한 상태값은 반드시 부모에게 전달되어져야 한다. 여기에는 두 가지 경우가 있는데, 부모가 SA_NOCLDWAIT 상태이거나, SIGCHLD 시그널에 대해서 시그널 핸들러를 SIG_IGN으로 지정했다면 종료값을 버리게 된다. 만약 부모가 wait()함수등을 이용해서 자식의 종료를 기다리게 되면 부모는 자식의 종료값을 얻을 수 있게 된다. 어느 쪽을 선택하든지 간에 자식 프로세스는 즉각 종료하는데, 만약 부모가 SA_NOCLDWAIT이거나 SIGCHLD에 대해 SIG_IGN하지 않은 상태에서 즉 자식의 종료를 기다리겠다고 명시한 상태에서 wait()를 하지 않았을 경우 자식 프로세스는 좀비(zombie)프로세스 상태가 된다. 좀비 프로세스에 대한 자세한 내용은 좀비 프로세스에 대한 고찰을 참고하기 바란다.

만약 SIGCHLD 시그널을 지원하도록 signal()설정을 했다면 자식 프로세스가 종료했을 때 SIGCHLD 시그널이 부모에게 보내어진다. 만약 SA_NOCLDWAIT로 설정되어 있다면 SIGCHLD 시그널이 전달되었을 때 어떤 일이 일어 날지 예측 할수 없다.

만약 종료되는 프로세스가 세션 리더이고 세션과 자신의 터미널을 제어하고 있다면, 이 터미널을 사용하는 foreground 프로세스에게는 SIGHUP시그널이 전달되고 세션과 터미널의 연결이 해제된다.


1.5. 예제

#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>


int main()
{
int pid;
int status;
int spid;
pid = fork();

if (pid == 0)
{
sleep(5);
printf("I will be back %d\n", getpid());
return 1;
}

else if(pid > 0)
{
printf("Im parent %d\n", getpid());
printf("Press any key and wait\n");
getchar();
// 자식프로세스를 wait 한다.
// 자식프로세스의 종료상태는 status 를 통해 받아온다.
spid = wait(&status);
printf("자식프로세스 wait 성공 \n");
// 자식프로세스의 PID, 리턴값, 종료상태(정상종료혹은 비정상종료)를
// 얻어온다.
printf("PID : %d\n", spid);
printf("Exit Value : %d\n", WEXITSTATUS(status));
printf("Exit Stat : %d\n", WIFEXITED(status));
}
else
{
perror("fork error :");
}
}


1.6. 참고문헌

  1. 좀비프로세스에 대한 고찰

  2. 프로세스 관계

  3. atexit(3)

:::
2007/10/21 10:20

linux man page : execl - 프로그램을 실행한다.

1장. execl(2)

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

파일을 실행한다.


1.1절. 사용법

#include <unistd.h>

int execl(const char *path, const char *arg, ...);


1.2절. 설명

execl 을 실행하게 되면 현재 프로세스 이미지를 새로운 프로세스 이미지로 바꾼다.

이 함수의 처음 인자는 실행되어야 하는 파일의 경로이다. 또한 파일이 실행될때 가질수 있는 인자를 지정해 줄수도 있다. 이를테면 arg0, arg1, ..., argn과 같은 형태를 가지며, 실행되어야할 파일의 경로와 아규먼트를 모두 지정했다면 반드시 NULL 을 마지막 아규먼트에 입력해주어야 한다.


1.3절. 반환값

execl 함수는 보통 return 을 하지 않는다. 만약 return을 한다면 에러가 일어난 경우로 -1 을 넘겨준다.


1.4절. 예제

#include <unistd.h>

int main()
{
execl("/bin/sh", "/bin/sh", NULL);
}
위의 예제를 컴파일후 실행하면 이 실행되는걸 알수 있을것이다.

:::
2007/10/18 00:35

linux man page : clock - 프로세스가 사용한 시간을 얻어낸다.

사용법

#include <time.h>

clock_t clock(void);

설명

clock()함수는 프로그램에의해서 사용된 대략적인 프로세스 시간을 리턴한다.

반환값

반환된값은 clock_t로 CPU시간으로 CLOCKS_PER_SEC로 나누면, 초로 환산할 수 있다. 만약 프로세서 시간을 얻을 수 없다면 (clock_t)-1을 리턴한다.

참고

 getrusage(2) , times(2)

셈플 프로그램

#include <stdio.h>
#include <string.h>
#include <time.h>

mymemcpy(void *dst, void *src, unsigned int size)
{
int i;
char *a = (char *)src;
int pad = size%sizeof(int);
for(i = 0; i < size/sizeof(int); i++)
{
*(int *)dst = *(int *)src;
dst +=4;
src +=4;
}
for (i = 0; i < pad; i++)
{
*(char *)dst = *(char *)src;
dst++;
src++;
}
}

struct data
{
int age;
char name[24];
char a;
};
int main(int argc, char **argv)
{
int i = 0;
struct data src, dst;
clock_t stime, etime;

memset((void *)&dst, 0x00, sizeof(src));
src.age = 10;
src.a = 'a';
sprintf(src.name, "%s", "yundream");

stime = clock();
for (i = 0; i < 10000000; i++)
{
mymemcpy((void *)&dst, (void *)&src, sizeof(src));
}
etime = clock();
printf("Time : %.3fs\n",(double)(etime - stime)/CLOCKS_PER_SEC);
printf("%d\n", dst.age);
printf("%c\n", dst.a);
printf("%s\n", dst.name);
}
메모리 카피하는 프로그램으로 성능을 측정하기 위해서 clock()함수를 사용했다.
:::
2007/10/10 09:44

linux man page : malloc - 메모리를 할당한다.



1장. malloc(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 예제
1.5절. 참고문헌

동적 메모리 할당 및 해제


1.1절. 사용법

#include <stdlib.h>

void *malloc(size_t size);
void *calloc(size_t size);
int free(void *ptr);
void *realloc(void *ptr, size_t size);


1.2절. 설명

malloc() 는 size 크기만큼의 메모리를 (동적으로)할당하기 위해서 사용한다. malloc()은 호출에 성공한뒤 할당된 메모리영역을 가르키는 포인터를 반환한다. malloc()을 이용해서 할당된 메모리 영역은 자동으로 clear 되지 않는다. 더이상 사용하지 않는 메모리영역은 반드시 free() 를 이용해서 clear 해주도록한다. 그렇지 않을경우 메모리 누수가 일어날수 있다.

calloc()는 size크기를 가지는 nmemb요소 만큼의 공간을 할당한다. 메모리는 0으로 설정된다.

realloc()는 ptr가 가르키는 메모리영역의 크기를 size만큼 조절한다. 메모리 영역에 있던 데이터는 그대로 남아 있게 된다. 만약 ptrNULL을 가리키고 있었다면 malloc(size)와 동일한 수행을 보여준다. size가 0이라면 free(ptr)과 동일한 수행을 보여준다.

free()는 ptr가 가르키는 메모리 영역을 해제한다. malloc(), calloc(), realloc()를 사용한 메모리영역을 더이상 사용하지 않는다면 free()를 호출해서 자원의 낭비를 막도록 한다. ptrNULL이라면 아무런 일도 수행하지 않은 경우가 된다.


1.3절. 반환값

calloc(), malloc()는 할당된 메모리를 가리키는 포인터를 리턴한다. 실패했다면 NULL을 리턴한다.

free()는 값을 리턴하지 않는다.

realloc()는 새로할당된 메모리를 가리키는 포인터를 리턴한다. 실패할 경우 NULL을 리턴한다. realloc()가 실패하더라도 이전 메모리가 해제되거나 이동하는 일은 발생하지 않는다. 만약 realloc()요청한 메모리의 크기가 충분히 커서 이전 포인터 영역에서 연속된 메모리 공간을 할당할 수 없게 된다면 공간확보가 가능한 다른 영역으로 복사된다.


1.4절. 예제

#include <string.h>
#include <stdlib.h>

struct name
{
int age;
char name[25];
};
int main()
{
char *org_name;
struct name *myname;
int i;

// org_name 에 char 이 25만큼 들어갈수 있는
// 메모리 공간을 할당한다.
// malloc 는 할당된 메모리 영역의 포인터를 리턴해주므로
// org_name 은 malloc 를 이용해 할당된 영역의 포인터를 가르키게 된다.
org_name = (char *)malloc(sizeof(char)*25);

// myname 역시 마찬가지로 struct name 이 2개 만큼 들어갈수
// 있는 메모리 공간을 할당한다.
myname = (struct name *)malloc(sizeof(myname)*2);

strcpy(org_name, "yundream");

myname[0].age = 25;
strcpy(myname[0].name, org_name);


strcpy(org_name, "testname");
myname[1].age = 28;
strcpy(myname[1].name, org_name);

for(i = 0; i < 2; i++)
{
printf("%d : %s\n", myname[i].age, myname[i].name);
}
}

위의 코드를 보면 org_name 라는 char 형 포인터가 선언되어 있다. 처음 선어시에 이 포인터는 아무것도 가르키지 않고 있음으로, 이 포인터를 사용하기 위해서는 메모리를 할당하고 할당된 메모리의 주소를 가르키도록 만들어 줘야 한다.

 malloc 사용전

+-- 4byte -+

+----------+
| org_name |
+----------+ ?
| |
+-----------------+

malloc 사용후
+- 25 byte -+

+----------+ +------------+
| org_name | |MEMORY |
+----------+ +------------+
| |
+-----------------+


1.5절. 참고문헌

  1. 동적메모리 할당

:::
2007/10/05 09:22

linux man page : ctime - 현재 시간을 문자열 형태로 되돌려준다.

1장. ctime(3)

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

현재 시간을 읽기 쉬운 문자로 되돌려준다.


1.1절. 사용법

#include <time.h>

char *ctime(const time_t *timep);


1.2절. 설명

인자로 들어가는 timep 는 Unix Time Stamp 값이다. 이 함수를 사용하면 timep 를 이용해서 계산된 현재 시간을 "요일 월 일 시:분:초 년" 형태로 되돌려준다.


1.3절. 반환값

"요일 월 일 시:분:초 년" 형태의 문자열을 되돌려준다.


1.4절. 에러

에러는 발생하지 않는다.


1.5절. 예제

#include <time.h>

#include <sys/types.h>

int main()
{
time_t ti = 1023451234;
char *test;

test = ctime(&ti);

printf("%s", test);
}
위 프로그램을 실행시키면 다음과 같은 결과를 보여준다.
[root@coco test]# ./ctime 
Fri Jun 7 21:00:34 2002


태그 :
:::