안녕하세요 파일 쓰기중에 문제가 생겨서 질문 드립니다
글쓴이: 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)) ; 일 겁니다.
그럼 ...
댓글 달기