#include <stdio.h>

main()
{
   /* FOPEN_MAX는 하나의 프로그램에서 동시에 열 수 있는 파일의 수를 의미 */
   printf("FOPEN_MAX : %d\n", FOPEN_MAX);
   exit(0);
}

      c 언어  |  2007. 9. 13. 10:15




#include <fcntl.h>
#include <unistd.h>
#define BUFFSIZE 1024

main()
{
   int fd1, fd2;
   ssize_t n; //ssize_t는 인트정도로 보면된다.
   char buf[BUFFSIZE];

   /* jkim 파일을 읽기 전용으로 열기. fd1은 jkim을 의미 */
   fd1 = open("jkim", O_RDONLY);
   /* kang 파일을 쓰기 전용으로 열기. fd2는 kang을 의미 */
   fd2 = open("kang", O_WRONLY);
   /* fd1 파일에서 문자를 BUFFSIZE 크기만큼 읽어 buf에 저장.
      read 함수에서도 파일 식별자를 사용하고 반환값은 실제로 읽은 바이트 수 */
   n = read(fd1, buf, BUFFSIZE);
   /* buf에 있는 내용을 n바이트만큼 fd2 파일에 저장.
      write 함수에서도 파일 식별자를 사용 */
   write(fd2, buf, n);
   /* fd1 파일 닫기 */
   close(fd1);
   close(fd2);
}
==========================================================
#include <fcntl.h>

main()
{
   int fd;
 
   /* jkim 파일을 읽기 전용으로 열기.
     만약 호출에 실패하게 되면 -1이 반환되므로 if 조건이 참이 됨 */
   if ((fd = open("jkim", O_RDONLY)) == -1) {
      perror("open failed"); //perror함수를 이용해서 에러메세지를 출력해주고있다.
      exit(1);
   }
   /* fd 파일 닫기 */
   close(fd);
   exit(0);
}
===========================================================
#include <fcntl.h>

main()
{
   int fd;

   /* 현재 디렉토리에 jkim 파일이 있으면 읽기 전용으로 열고,
      없으면 현재 디렉토리에 0바이트 크기의 jkim을 생성하고 이를 연다.
      생성된 파일의 접근 권한 정보는 0644 */
   if ((fd = open("jkim", O_RDONLY | O_CREAT, 0644)) == -1) {
      perror("open failed");
      exit(1);
   }
   close(fd);
   exit(0);
}

      c 언어  |  2007. 9. 13. 10:15




리눅스에선 파일마다 번호가 부여파일이 열릴때마다
 파일 식별자(file descriptor)프로세스에 종속적이고 실행중인프로그램안에서만 유효하다.
 프로그램이 하나 실행되면 기본적으로 세개의 파일 식별자가 자동적으로 지정 키보드를 사용하는 표준 입력, 모니터에 나타나는 표준 출력, 모니터에 나타나는 표준 오류로 0, 1, 2가 각각 배정
그후에 파일들이 3,4,5... 이런순으로 배정된다.

fd = open("jkim", O_RDONLY | O_CREAT, 0644) 644는 권한을 주어서 여는것이다.


파일 닫기
실행 중인 한 프로그램이 동시에 열 수 있는 파일의 수에는 제한이 있다.
int close(int fd); fd에는 디스크립터 넘버를 넣으면된다.

파일로부터 읽기
read 함수
기능
       파일로부터 데이터를 읽는다.
기본형
       ssize_t read(int fd, void *buf, size_t nbytes);  //ssize_t는 인트정도로 보면된다.
 fd에다가 0번을 집어 넣으면 읽어오게된다. 표준입력을 통해서
       fd : 읽을 파일의 파일 식별자
       buf : 읽어 온 데이터를 저장하는 변수
       nbytes : 읽어 올 데이터의 바이트 수
반환값
       성공 : 읽은 바이트 수
       실패 : -1
헤더 파일
       <unistd.h>

파일로부터 쓰기
write 함수
기능
       파일에 데이터를 쓴다.
기본형
       ssize_t write(int fd, const void *buf, size_t nbytes); //ssize_t는 인트정도로 보면된다.
 표준출력이 1번이기 때문에 fd에다가 표준출력인 1번을 넣어주면 화면에 데이터가 출력된다.
       fd : 쓸 파일의 파일 식별자
       buf : 데이터를 저장하고 있는 변수
       nbytes : 쓸 데이터의 바이트 수
반환값
       성공 : 파일에 쓴 데이터의 바이트 수
       실패 : -1
헤더 파일
       <unistd.h>

      c 언어  |  2007. 9. 13. 10:01



sokoban's Blog is powered by Daum & Tattertools