시스템 호출 배우는중 ,ㅇㅅㅇ....
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
#define PERMS 0644
int main(){
int fd=0;
char * pathname="./mymsg.txt";
char*msg="Hello World!";
ssize_t wsize=0;
fd=open(pathname, O_CREAT | O_TRUNC | O_RDWR, PERMS);
if(fd==-1){
perror("open() error!");
exit(-1);
}
wsize=write(fd,(char*)msg,strlen(msg));
if(wsize==-1){
perror("write() error!");
exit(-1);
}
printf("fd: %d, wsize: %ld \n", fd, wsize);
close(fd);
return 0;
}
초고수
개빡씹좆애미씨발고수
천재냐 ㅇㅅㅇㅋㅋㅋ
ㅋㅋㅋㅋ
천재인듯ㅇㅅㅇㅋㅋ
헉벌써아침이야에 댓글단거 확인좀ㅇㅅㅇ..
답했어!
1. 저수준 파일 함수로 콘솔 입출력하는데 표준입출력 헤더는 왜 넣어? 그리고 read, write 계통은 문자 기반이 아니라 바이트 기반이고 C 표준에서 다루는 내용이 아니라서 strlen으로 굳이 길이를 알아내야할 필요가 있을까? puts 뒤에 개행문자 없는거랑 뭐가 다름.
2. 전체적으로 보면 필요없는 라이브러리를 너무 많이 끌어들였고 fd랑 wsize는 초기화해줘야할 필요가 없어. 사실 콘솔에다 입출력할거면 unistd.h로 모든게 가능해. 문자열의 길이를 이미 알고 있다는 가정하에. 저정도 수준으로는 유닉스 시스템 프로그래밍에 끼워주기도 애매함.
1주차다 시발아
Hello world 안보이냐
쨋든답변고맙다 덕분에 알아간다
1주차에 이런걸 한다면 대단하네. 너무 과소평가한거 같네. 그러면 과대평가를 위해 문제 하나 낼게. printf의 복제판을 그 어떤 구현체의 참조없이 복제해봐. 출력은 항상 UTF-8 형식으로 나와야 해.