리눅스
cat 명령과 유사한 기능을 수행하는 c프로그램 (open(), read(), write(), close()를 사용한)
저긍
2024. 9. 21. 00:07
반응형
특수문자 <, >, >> 처리 생략.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
int fd;
char buf[BUF_SIZE];
ssize_t num_of_read;
if (argc == 1) {
while ((num_of_read= read(STDIN_FILENO, buf, BUF_SIZE)) > 0) {
write(STDOUT_FILENO, buf, num_of_read);
}
} else {
for (int i = 1; i < argc; i++) {
fd = open(argv[i], O_RDONLY);
if (fd == -1) {
perror("Can not open this file...");
return 1;
}
while ((num_of_read= read(fd, buf, BUF_SIZE)) > 0) {
write(STDOUT_FILENO, buf, num_of_read);
}
close(fd);
}
}
return 0;
}
$> vi mycat_1.c
$> gcc mycat_1.c –o mycat_1
$> ls
mycat_1 mycat_1.c
for문을 사용하여, 여러개의 파일도 읽을 수 있다.
표준 입력을 표준 출력한다.
반응형