Linux pipe를 통한 프로세스간 통신

develop의 이미지

c언어로 작성했습니다.

int main(int argc, char* argv[]){

// 부모 프로세스에서 결과값 넣기
close(fd[0]);
memset(buf, 0X00, 255); // buf는 char형이고 초기화 하는 작업임
sprintf(buf, "%s", argv);
write(fd[1], buf, strlen(buf)); // fd[1]은 pipe입니다. 쓰기용

// 자식 프로세스에서 결과값 받아오기
close(fd[1]);
memset(buf, 0X00, 255);
n = read(fd[0], buf , 255);
printf("%s\n", buf);

}

위 코드는 동작하는 코드만 넣은 것입니다.
근데, 동작을 안합니다. 왜? 일까요??
어떻게 해야
1, 부모에서 자식에게 값을 제대로 넘겨줄까? ( argv 매개변수 받은걸(숫자로 이루어진 매개변수))
2, 자식이 어떻게 PIPE를 통해 값을 제대로 가져올까??
3, 자식이 가져와서 INT형으로 어떻게 변환할까?

아무리 고민해도 모르겠어요ㅠㅠㅠ

(현재 공부중입니다. 다른 방법은 안되요, PIPE만 써서 하려고 해요 ㅠㅠ)

익명 사용자의 이미지

develop의 이미지

답변 감사합니다.
보내주신 페이지를 보니 뭔가 풀 수 있을거 같기도 하네요 해보겠습니다.!!!

develop의 이미지

근데, 해보니까 ㅠㅠ 잘안되긴 한데 혹시
pipe에 int값 넣는 법을 아시나요 ? 잘 안되네요 ㅠㅠ

raymundo의 이미지

답변을 하는 사람 입장도 조금은 생각을 해주셔서...

최소한 답변하는 사람이 바로 실행해볼 수 있는 수준의 코드를 올려주시고 (code 태그를 써서), "동작을 안합니다"라고 쓰지 마시고 "이러이러한 입력을 넣으면 이러이러한 출력이 나와야 하는데 실제로는 이러이러하게 됩니다"라는 정도의 정보는 적어주세요... 지금 상태로는 컴파일이 안 된다는 말인지 먹통이 된다는 말인지 죽는다는 말인지 엉뚱한 값이 나온다는 말인지도 알 수가 없으니 그저 윗분처럼 pipe 예제 코드를 보세요라는 답밖에 할 수 없을 듯 합니다.

3번 질문 정도는 지금 상태로도 대답이 가능하겠네요.
1) 문자열로 들어온 숫자를 그대로 파이프로 보내고, 받은 쪽에서는 문자열을 받아서 atoi로 정수로 변환한다.
2) 문자열로 들어온 숫자를 atoi로 정수로 변환한 후, int 변수의 내용 4바이트 분량을 write로 보내고 받는 쪽에서도 int 변수의 주소를 read의 인자로 주어 받는다.
3) 기타 참신한 방법을 쓴다(?)

좋은 하루 되세요!

develop의 이미지

답변감사드립니다.
생각해보니 질문이 뭔내용인지 알기 힘들게 되어있네요!!
다음에는 확실히 질문 내용을 알게 올리겠습니다. !!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.