PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/05/02 22:32:51
Name 롤즈.
Subject 프로그래밍 질문입니다.
만들고 있는 프로그램이 포크를 써서 자식을 생서하고 파이프를 써서 왔다갔다 하는건데요
부모프로세스가 자료를 넣어주면 자식이 읽는 뭐 그런 프로그램입니다.
책보고 한번 짜봤는데 첫라인부터 오류라고...expected expression before char 이렇게 뜨고.. 이거 주석처리하고 실행해보면
expected expression before int라고 뜨고...잘 몰르겠네요....

이렇게 쓰고 질문했었는데 복사해와서 보니까 main밑이 {가 아니고 [였네요;;
수정하고 해보니까
warning: passing argument 2 of ‘write’ makes pointer from integer without a cast
/usr/include/unistd.h:363: note: expected ‘const void *’ but argument is of type ‘char’
pipe.c:38: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’

이런 오류네요...

#include <unistd.h>
//#include <sys/type.h>
#define SIZE 500
//char buffer[n];
//int n,in,out = 0 ;

main()
[
        char  buffer[SIZE];
        char arg[SIZE];
        int n, in , out = 0;
        int i;
        pid_t childpid;
        int fd[2]; //fd[0] 에서 읽어들이고 fd[1]에서 쓴다. 0번에 계속 삽입, 1번에서 빼가기

        if(pipe(fd) == -1){
                perror("파이프 생성 실패");
                return 1;
        }
        childpid = fork();

        if(childpid == -1){
                perror("포크 실패");
                return 1;
        }

        if(childpid)
        {
                for(i=0; i<500; i++){
                        write(fd[1],arg[i], SIZE);
                        printf("부모 프로세스는 파이프에 쓴다 : %s\n", arg[i]);
                }
        }
        else
        {
                for(i=0; i<500; i++){
                        read(fd[0], buffer, SIZE);
                        printf("자식 프로세스는 파이프에서 읽는다 : %s\n", buffer);
                        }
        }
        return 0;
}


이렇게 짜봤는데요 책3권을 섞어가면서 짠거라 많이 안맞을거같은데 어떻게 고쳐야되는지 알려주세요 ㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/05/02 22:38
수정 아이콘
질문하고 답도하네요;
책을 보니까 위에 char [arg]를 char *arg로 고쳐주니까 에러없이 수행은 되는데
결과과
부모 프로세스는 파이프에 쓴다 : �
자식 프로세스는 파이프에서 읽는다 : ���
T
부모 프로세스는 파이프에 쓴다 : ���
T
자식 프로세스는 파이프에서 읽는다 : ����z���������������`���1��
$�
부모 프로세스는 파이프에 쓴다 : ����z���������������`���1��
$�
자식 프로세스는 파이프에서 읽는다 :
부모 프로세스는 파이프에 쓴다 :
세그멘테이션 오류

이런식으로 뜨네요, 원하는 결과는 숫자가 뜨는걸 기대한고 짠건데.......;;
azurespace
11/05/03 19:39
수정 아이콘
char arg[SIZE][SIZE+1]로 선언해 보세요.

SIZE가 아니라 SIZE+1을 넣으시라고 한 이유는 char형으로 문자열을 만들면 뒤에 Terminating NULL 문자가 들어갈 공간이 필요하기 때문입니다.

올리신 코드 상태대로라면 arg[i]는 char형입니다. 반면 write 함수는 char *를 요구할 겁니다. 형식 불일치 때문에 일어나는 오류죠.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
104131 가운데 손가락 손톱에 검은 세로줄이 생겼는데요!! [3] 피스~6926 11/05/02 6926
104130 푸딩 얼굴 인식 어플 질문입니다. [5] 익스트라1753 11/05/02 1753
104129 어제 맨유패배 후 퍼거슨경 인터뷰 번역 요청합니다. [2] 하늘의왕자2160 11/05/02 2160
104128 어버이날 선물 괜찮은게 있을까요.. [6] 아레스1902 11/05/02 1902
104127 이 음악 곡 제목이 궁금합니다. [1] 驟雨2024 11/05/02 2024
104125 프로그래밍 질문입니다. [2] 롤즈.2820 11/05/02 2820
104124 발목 삔 뒤 오래되었는데도 후유증으로 종종 많이 아픕니다... [6] nexon1880 11/05/02 1880
104122 국제무역사 시험 보신 분들만 읽어주세요^.^ 비빔면1730 11/05/02 1730
104120 제대로 군신청 했나 봐주세요 [8] parksamsu2371 11/05/02 2371
104118 갤스2를 구입했는데 막막하네요-_- [5] 열정적으로2538 11/05/02 2538
104117 인터넷 익스플로러 9 설치해도 될까요? [6] 행복하게살자2147 11/05/02 2147
104115 죄송하지만 영어해석에서 어떻게 해석해야될지 몰라서 도움좀 요청하겠습니다;; [2] 으컁/2116 11/05/02 2116
104114 [프야매] 몇몇 선수들의 우열비교 설문. [57] 완성형폭풍저1758 11/05/02 1758
104112 빈라덴 사망과 국제유가와의 관계 [4] 낭만토스2095 11/05/02 2095
104111 나가수 질문입니다.. [17] nickyo2312 11/05/02 2312
104110 해외로 보내는 택배 질문입니다. [5] 크흠..1745 11/05/02 1745
104109 갤럭시s2 질문입니다. [2] Sigh2051 11/05/02 2051
104108 모의 토플 보신 적 있으신 분 계신가요?? [1] 한듣보1503 11/05/02 1503
104107 저도 오락실 게임 하나 질문 [1] 늘푸른솔솔1743 11/05/02 1743
104106 부모님결혼기념일선물&지갑질문입니다~ [1] Ten기원1553 11/05/02 1553
104105 iOS Variant Playlist 에 대해서 질문입니다.. NewGGun1749 11/05/02 1749
104104 자동차 구입건으로 질문 좀 드리겠습니다. [2] 카오리1490 11/05/02 1490
104103 고전게임 질문 (난이도 별 ★★★★★) [14] sEekEr2967 11/05/02 2967
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로