반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- TCP/IP
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- C++ API
- 프리미어 영상저장
- 월세
- Lua
- lua setup
- 중소규모택지
- object
- file read
- 티몬삼겹살데이
- 엑스퍼트생일축하해
- 청량리역한양수자인192
- meta table
- 등록임대주택
- 국토교통부
- FILE TRANSFER
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- file write
- lua for windows
- lua interpreter
- lua install
- 프리미어 영상변환
- 수도권주택공급
- file open
- 엑스퍼트2주년
- QTcpServer
- 찾다죽는줄
- C API
- QT TCP
Archives
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
Chapter 1_2 리눅스 기반 파일 조작하기(파일 디스크립터) 본문
반응형
low_open.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
void error_handling(char* message);
int main(void)
{
int fd; //파일 디스크립터 선언
char buf[]="Let's go!\n";//문자열 선언
fd=open("data.txt", O_CREAT|O_WRONLY|O_TRUNC);//data.txt라는 파일생성, 쓰기only
if(fd==-1) //읽기 에러 표시
error_handling("open() error!");
printf("file descriptor: %d \n", fd); //파일디스크립터 번호 출력
if(write(fd, buf, sizeof(buf))==-1) //쓰기 에러 표시
error_handling("write() error!");
close(fd); //닫기
return 0;
}
void error_handling(char* message) //에러를 표시하고, exit를 통해 프로그램 빠져나온다.
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
//아래는 우분투 터미널 상에서 명령어 입력 방법
/*
root@com:/home/swyoon/tcpip# gcc low_open.c -o lopen
root@com:/home/swyoon/tcpip# ./lopen
file descriptor: 3
root@com:/home/swyoon/tcpip# cat data.txt
Let's go!
root@com:/home/swyoon/tcpip#
*/
low_read.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUF_SIZE 100 // 버퍼 크기 설정
void error_handling(char* message);
int main(void)
{
int fd;
char buf[BUF_SIZE]; //버퍼 크기 만큼의 문자열 생성
fd=open("data.txt", O_RDONLY); //읽기 전용으로 열기
if( fd==-1)
error_handling("open() error!");
printf("file descriptor: %d \n" , fd);
if(read(fd, buf, sizeof(buf))==-1)
error_handling("read() error!");
printf("file data: %s", buf);
close(fd);
return 0;
}
void error_handling(char* message)
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
/*
root@com:/home/swyoon/tcpip# gcc low_read.c -o lread
root@com:/home/swyoon/tcpip# ./lread
file descriptor: 3
file data: Let's go!
root@com:/home/swyoon/tcpip#
*/
fd_seri.c
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>
int main(void)
{
int fd1, fd2, fd3; //파일 디스크립터가 몇 번인지 표시한다.
fd1=socket(PF_INET, SOCK_STREAM, 0); //소켓의 파일 디스크립터 번호는 3
fd2=open("test.dat", O_CREAT|O_WRONLY|O_TRUNC); //파일 open의 파일 디스크립터는 4
fd3=socket(PF_INET, SOCK_DGRAM, 0); //소켓의 파일 디스크립터는 5
//결론 : 파일 디스크립터 0,1,2는 정해져 있고, 3번부터 순차적으로 배당해준다.
//파일디스크립터 0번 : 표준 입력, 1번 : 표준 출력, 2번
printf("file descriptor 1: %d\n", fd1);
printf("file descriptor 2: %d\n", fd2);
printf("file descriptor 3: %d\n", fd3);
close(fd1);
close(fd2);
close(fd3);
return 0;
}
반응형
'1. 프로그래밍 > 4) Network' 카테고리의 다른 글
Chapter 4 TCP 기반 서버 클라이언트 (0) | 2019.10.29 |
---|---|
Chapter 3 소켓 주소 체계와 데이터 정렬 (0) | 2019.10.29 |
Chapter 1 서버-클라이언트 소스코드 분석 (0) | 2019.10.28 |
윤성우의 열혈 TCP/IP 프로그래밍 pdf 사이트 (0) | 2019.09.19 |
#4 리눅스 네트워크 프로그래밍 (0) | 2019.06.18 |
Comments