/* low_open.c */

#include <stdio.h>
#include <unistd.h>
#include <sys/type.h>
#include <sys/stat.h>
#include <fcntl.h>

void error_handling(char *message);

int main(void)
{
int fildes;
char buf[] = "Let's go!\n";

/* data.txt라는 이름의 파일 생성 */
fildes = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC);
if(fildes == -1)
  error_handling("open() error!");

printf("생성 된 파일의 파일 디스크립터는 %d 입니다. \n", fildes);

/* 생성한 파일에 buf의 내용 전달 */
  if(write(fildes, buf sizeof(buf)) == -1)
    error_handling("wirte() error!");

close(fildes);

return 0;
}

void error_handling(char *message)
{
 fputs(message, stderr); // fputs 표준 입출력함수.
 fputc('\n', stderr); // fputc 표준 입출력 함수.
 exit(1);
}

출력 결과 : 생성 된 파일의 파일 디스크립터는 3 입니다.




/* low_read.c */

#include <stdio.h>
#include <unistd.h>
#include <sys/type.h>
#include <sys/stat.h>
#include <fcntl.h>

#define BUFSIZE 100

void error_handling(char *message);

int main(void)
{
 int fildes;
 char buf[BUFSIZE];

 /* data.txt라는 이름의 파일 오픈 */
 fildes = open("data.txt", O_RDONLY);
 if(fildes == -1)
  error_handling("open() error!");

 printf("오픈 한 파일의 파일 디스크립터는 %d 입니다. \n", fildes);

 /* 파일에 존재하는 내용을 buf로 읽어 들인다. */
 if(read(fildes, buf sizeof(buf)) == -1)
  error_handling("read() error!");

 printf("파일의 내용 : %s", buf);

 close(fildes);

 return 0;
}

void error_handling(char *message)
{
 fputs(message, stderr);
 fputc('\n', stderr);
 exit(1);
}

출력 결과 : 오픈 한 파일의 파일 디스크립터는 3 입니다.
                파일의 내용 : Let's go!

 





/* fd.seri.c */

#include <stdio.h>
#include <fcntl.h>
#include <sys/socket.h>

int main(void)
{
 int fdes1, fdes2, fdes3;

 fdes1 = socket(PF_INET, SOCK_STREAM, 0); // 소켓 생성
 fdes2 = open("test.txt", O_CREAT); // 파일 생성
 fdes3 = socket(PF_INET, SOCK_DGRAM, 0); // 소켓 생성

 printf("첫 번째 파일 디스크립터 : %d\n", fdes1);
 printf("두 번째 파일 디스크립터 : %d\n", fdes2);
 printf("세 번째 파일 디스크립터 : %d\n", fdes3);

 close(fdes1);
 close(fdes2);
 close(fdes3);

 return 0;
}


출력 결과 : 첫 번째 파일 디스크립터 : 3
                두 번째 파일 디스크립터 : 4
                세 번째 파일 디스크립터 : 5


+ Recent posts