fork 를 이용한 동시 작업 수행 ...로직 짜는것 ...

Sailor_moon의 이미지

안녕하세요 , 한창 운영체제를 공부중인 학부생이예요 ...
늘 이곳에서 도움 받아가며 공부중인지라 , 감사하게 생각합니다.

다름이 아니라 학교 과제로, fork 와 exec 를 이용해서, 여러개의 동시 작업을 수행하는 간단한 프로그램을 짜는 것을 받았습니다.
1.유저가 폴더를 지정해주면 ,
2.그 폴더 안의 이미지를 모두 불러와서,
3.우선 작은 thumbnail 이미지를 만든다음에
4.rotate 혹은 resize 할지 물어보고
5.필요하다면 한 뒤에 최종적으로는 하나의 html 파일로 만들어 내는 것인데 ...

문제는 요구사항이 concurrent 를 유지하라는 사항이 들어갔더군요. 제가 여태까지 배운바로 해석한다면,
유저가 4번에서 thumbnail image 를 보면서 , 아 rotate 혹은 resize 를 해야겠구나 라고 판단하는 도중에,
multi process 가 다른 일을 처리하게 하는 것이 이 과제의 핵심 이라고 생각하거든요 ....

그래서 제가 생각한것이 , 우선 폴더 내의 파일을 불러오면서 , 파일 갯수를 세고,
갯수 만큼 한번에 fork 를 한 뒤에 순차적으로 작업을 시키려고 봤더니 ...
waitpid 를 이용하게 되면, child 가 끝날때까지 parent 가 계속 기다리게 되어서,
waitpid 하고 차일드 생성해버리면 유저에게 4번 과정을 묻고 있을때 원하는 형태로 나와지지가 않더군요.
Parent 들이 줄줄이 ... 각각의 차일드의 차일드의 차일드들이 종료되어서 올라오길 기다리는 형태가 되어서요 ...

다른 참고할만한 방법이 있을까요 ?

bushi의 이미지

fork 와 exec 를 이용하라는 것은 system() 콜을 직접 만들어서 사용하라는 뜻 외엔 없는 것 같습니다.
thumbnail 이미지를 만드는 독립 프로그램과
rotate/resize 를 해주는 독립 프로그램을 만들고,
이 둘을 적절히 실행시키되 system() 함수를 쓰지 말고 하세요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.