반응형
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
- 티몬삼겹살데이
- C++ API
- 중소규모택지
- 엑스퍼트생일축하해
- C API
- 육전국밥 #강남역맛집 #24시간맛집 #소고기국밥 #육전 #모둠전 #해물파전 #강남한식 #혼밥맛집 #강남역국밥
- #서초구맛집 #교대역된장찌개 #옥된장교대점 #서초된장맛집 #교대직장인맛집 #된장찌개전문점 #서울된장정식 #혼밥맛집 #건강한한끼 #교대점심맛집
- 월세
- 엑스퍼트2주년
- 순남시래기 #교대맛집 #교대역맛집 #한식맛집 #시래기국 #서울맛집 #가성비맛집 #건강한식단 #셀프반찬 #직장인맛집
- lua setup
- FILE TRANSFER
- 수도권주택공급
- TCP/IP
- QT TCP
- Lua
- 찾다죽는줄
- 등록임대주택
- 편편집 #강남역맛집 #강남샤브샤브 #강남무한리필 #편백찜맛집 #월남쌈맛집 #샤브샤브맛집 #가성비맛집 #강남회식 #강남데이트
- object
- QTcpServer
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- lua interpreter
- lua for windows
- 국토교통부
- file write
- lua install
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- 전동포 #송파구전기자전거 #전동킥보드수리 #모토벨로대리점 #전기자전거판매 #전동스쿠터수리 #배터리수리 #전기자전거수리 #송파구전동킥보드 #전동이동수단
- 강남역맛집 #육전국밥강남역점 #강남국밥맛집 #서울국밥추천 #강남육전맛집 #강남혼밥 #강남역점심 #서울국밥집 #강남수육국밥 #육전정식
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