#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);
}