다음과 같은 경우엔 어떻게 디자인하는게 가장 좋은가요?

익명 사용자의 이미지

실행 파일 A와 B를 포함하는 프로젝트가 있습니다.

프로그램 A는 프로그램 B를 실행시키고, B의 실행이 종료되길 기다렸다가 다시 일정 조건이 되면 다시 B를 실행, 종료하고... 이런걸 반복합니다. 즉, 프로그램 A는 fork () -> exec () -> wait () 하는 기법을 사용합니다.

A와 B를 하나로 합칠 수는 없는 상황이라고 가정합시다.

프로그램 A와 프로그램 B를 같이 배포한다고 가정합시다.
그러면 프로그램 A에서 프로그램 B의 경로를 알아야 exec ()을 할 수가 있는데요...
일반적으로 프로그램 B의 경로를 어떻게 알아내는게 일반적인가요?

몇 가지 경우의 수를 생각해보면...

1. execp ()를 사용한다. 즉, 환경변수 PATH를 뒤져서 프로그램 B의 경로를 알아낸다.
2. 프로그램 A의 환경설정 파일(예: ~/.A.conf)을 통해서 사용자가 프로그램 B의 경로를 설정하도록 한다.
3. 새로운 실행 파일 C를 만들고, 실행 파일 C의 끝부분에 파일A와 파일B를 더미 데이타로 덧붙인 후, 실행 파일 C만을 배포한다. 실행 파일 C를 실행시키면, 파일 A와 파일B를 적당한 temporary 디렉토리에 풀어놓고, A를 실행시킨다.

... 이렇게 생각해봤습니다만.. 각각의 단점 또는 문제점 생각해보자면...

1. 실행 파일 B의 이름이 변경되서 설치되는 경우, 프로그램 A에서 B를 제대로 찾지 못하게 됩니다. 사용자가 configure 단계에서 실행 파일에 접두사 또는 접미사를 붙여버리는 경우가 있을 수 있는데, 이럴 때 어떻게 대처해야 할 지 모르겠습니다.

2. 프로그램 B 경로 하나 때문에 환경설정 파일을 동반해야 한다는게 번거롭다는 생각입니다.

3. 3번과 같이 배포하는 구체적인 방법을 제가 알지 못합니다. 실제로 3번과 같은 방법으로 배포되는 프로젝트가 있는지, 실제 그러한 방법이 가능한지, 만약 가능하다면 관련 툴이 존재하는지 등등 아시는 분이 계시다면 알려주시면 감사드리겠습니다.

익명 사용자의 이미지

4번. 미리 정의한 환경변수 사용
PROGRAM_B_HOME=/some/where/in/the/world program_a
program_a는 PROGRAM_B_HOME 환경 변수를 읽어서 B의 위치를 알아내고요.

댓글 달기

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