안녕하세요 파일 쓰기중에 문제가 생겨서 질문 드립니다
글쓴이: svsummon / 작성시간: 토, 2009/10/03 - 1:53오전
안녕하세요 항 상여기서 도움을 받는 학생입니다 (__)
추석 댓바람부터 질문이네요 ㅠㅠ(망할 과제들 ㅠㅠ)
다름이 아니고..
과제가 부모 하나에 자식 4개를 만들어서 각각 파일을 만들고 그 파일안에
부모의 pid와 자식의 pid를 쓰는 건데요..
지금 각각 프로세스를 돌려서 부모의 pid로 폴더를 만들고 각각 4개의 자식들로 파일을 생성하는것 까지는 성공했거든요..
문제는 파일 쓰기에서 걸리는데.. 일단 한글이 안들어가지고 =_=;;
제가 의도한거 보다 많은 양의 데이터가 파일로 들어갑니다.. 심지어 제가 의도하지 않은 곳에서 줄도 바뀌는데..
무슨 문제인지 잘 모르겠습니다 ㅠㅠ;;
고수분들의 도움 부탁드려요..
제가 잘못 한 곳이 어느부분인지 찝어 주시면 감사하겠습니다 'ㅅ')/
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <sys/types.h> 5 #include <string.h> 6 #include <fcntl.h> 7 8 #define PERM 0644 9 main() 10 { 11 int pid[4]; 12 int i; 13 char tmp[6]; 14 15 sprintf(tmp, "./%d", getpid()); 16 17 char buf[255]; 18 19 mkdir(tmp, 0755); 20 chdir(tmp); 21 22 int ppid; 23 ppid = getppid(); 24 25 // for(i=0; i<4; i++) 26 // pid[i] = fork(); 27 28 for(i=0; i<4; i++) 29 { 30 if((pid[i] = fork()) <= 0) 31 { 32 int file; 33 34 // printf("%d\n", pid[i]); 35 36 sprintf(buf, "%d", getpid()); 37 // printf("%s\n", buf); 38 39 if((file = open(buf, O_WRONLY | O_CREAT | O_TRUNC, PERM)) == -1 ) 40 printf("file open error\n"); 41 else 42 { 43 sprintf(buf, "<P0의 PID> : %d\n", getppid()); 44 write(file, buf, sizeof(buf)); 45 46 sprintf(buf, "<P%d의 PID> : %d\n", i, getpid()); 47 write(file, buf, sizeof(buf)); 48 49 close(file); 50 51 exit(1); 52 } 53 } 54 } "forkReport.c" 60L, 860C 44,5-17 84%
Forums:
아무도 답변을 안드리니 그냥 제가...
write(file, buf, sizeof(buf));
위부분이 문제입니다. 위 문장을 조금 바꾸면
write(file, buf, 255);
입니다. 뭐가 문제인지 아시겠지요.
아마 원하셨던건 write(file, buf, strlen(buf)) ; 일 겁니다.
그럼 ...
댓글 달기