고수님들 제발 unix 문제점 풀어주세요... 급합니다.

knhhack의 이미지

제가 앞날을 위해 유닉스나 리눅스를 공부하려고 했는데, 그게 여의치 않터군요...
아튼 이번 여름엔 유닉스 공부를 좀 시작해보려구합니다.
그런데, 이번에 유닉스에 관한 문제를 풀어서 제출해야하는데, 도저희 무슨뜻인지 알수가 없네요... (유닉스와는 전혀 상관없는 직장인데,...) 그래서 여러분들께 부탁드립니다....
문제의 뜻도 모르겠구, 유닉스도 모르겠구, 총 5문제였는데, 3문제는 어떻게 물어물어 풀었습니다. 일요일까지 메일로 보내야하는데, 급합니다. 제가 공부좀 해서 풀어보려구 했는데, 시간이 너무 촉박해서 어쩔수가 없어 이렇게 여러분들 께 부탁드립니다. 꼭 부탁드립니다....
친구가 여기를 소개해 주더군요...
일단 문제는...
1. Sep 같은 월 문자열, 18 같은 일의 수와 1962 같은 년도의 수인 3개의 매개변수를 갖는 DateToDays라는 함수를 작성하라. 이 함수는 1900년 1월 1일부터 오늘 까지의 날짜의 수를 반환한다.(셀 스크립트)

2. 2개의 매개변수(스크립트의 이름과 정수)를 갖는 pulse라는 스크립트를 작성하라. pulse는 명시된 시간 동안 명시된 스크립트를 실행한 후, 같은 시간 동안 그것을 잠시 중단해야 하는데, 명시된 스크립트가 끝날 때까지 이 과정을 계속해야 한다.(셀 스크립트)

아시는분 꼭 부탁드립니다... 답변으로 안되면 메일로 보내주셔두 됩니다.
전 문제의 뜻도 모르겠습니다.
knhhack@hanmail.net

lsj0713의 이미지

1번문제는 다음과 같은 함수를 만들라는 얘기입니다. 무슨 언어로 짜라는 요구 사항이 없으므로 C로 설명하겠습니다.

int DateToDays(const char *month, int day, int year);

total = DateToDays("Sep", 18, 1962);

1900년 1월 1일부터 입력된 날짜까지 며칠이나 지났나를 세주는 함수를 만들란 얘기죠. 달력이나 날짜 구하는 루틴은 인터넷상에서 많이 구할 수 있으므로 굳이 설명하지 않겠습니다.

2번 문제는 저도 뭔소리인지 모르겠군요-_-;; 일단 다음과 같은 스크립트를 만들라는 것은 알겠는데...

$ pulse ScriptName 3
$
(백그라운드로 ScriptName인 스크립트 실행중...)

아마도 3초동안 ScriptName 스크립트를 실행하고, 그후에 ScriptName Process를 잠시 3초동안 멈춘 다음에 다시 3초동안 작업을 재개하고, 똑같은 과정을 반복... 뭐 그러란 얘기 같군요. 만약 ScriptName 스크립트가 종료하면 pulse도 따라서 종료해야 되겠지요.

유닉스쪽 명령어는 잘 모르겠지만, 우선 해당 스크립트가 실행되는 프로세스의 pid를 구할 수 있어야 되겠고, 그 프로세스로 멈추라는 명령과 다시 재개하라는 명령을 전달할 수 있어야 되겠습니다.

쉘 스크립트는 잘 모르므로, 의사 코드로 설명을 하겠습니다.

ScriptName을 실행시킨다;
flag = 1;
while (1)
{
N초동안 시간을 보낸다;
ScriptName이 종료되었으면 루프를 탈출한다;
if ( flag가 1이면 ) ScriptName을 멈추고 flag를 0으로 만든다;
else ScriptName을 재가동하고 flag를 1로 만든다;
}

이런식으로 만들면 되겠습니다.

에구 유닉스에 대해 아는 것이 없어 이정도밖에 못알려드리겠습니다-_-;;
그럼 월요일까지 성공하시길 빕니다.

knhhack의 이미지

답변 감사합니다.
근데, 스크립트를 아예 구성해주시면 안되나요?
제가 조금이라도 알면 어떻게 해보겠는데, 몰라서....
죄송하지만 구성점 해주세요...
꼭 부탁드립니다.

jj의 이미지

윗분이 충분한 힌트를 주신것 같군요...

이곳 KLDP정도면, Unix/Linux유저는 밥먹듯이 들리는 곳인데요... 문제 내신분이 오실지 불안하지 않으세요? ^^

열심히 하세요...

--
Life is short. damn short...

xfmulder의 이미지

둘다 쉘로 짜라는거 같은데 ...

1번 문제를 풀려면 1900년 1월 1일 부터 오늘까지 날수를 얻어올수 있는 명령을 찾아야 하는데 (예를 들면 date 에 그런 옵션이 있는지가 관건이겠네요).
없으면 ? 매년 날수를 더해가야 하나요?

2번문제는
명령을 백그라운드로 실행시켜두고 그 pid ($! 이지요?) 를 kill 명령으로 SIGSTOP SIGCONT 를 날려서 구현하면 될것 같네요.
또 죽었나 안 죽었나 확인하려면 kill -0 해서 exitcode 가 0이면 아직 살아있는거고......

이게 무슨뜻인지는 같이 공부하는 사람들에게 물어 보시거나 아니면 문제 내신 선생님한테 물어보시면 될것 같네요.

대충 이런 코드

 
COMMAND=$1  #첫인자는 명령
SECONDS=$2   #두번째는 시간(초)

$COMMAND &  #실행할 명령을 백그라운드로 실행하면 $! 에 그 pid가 들어감

PID=$!

while true
do
sleep $SECONDS 

if kill -0 $PID ;then
  kill -SIGSTOP $PID
  sleep $SECONDS
else 
  echo " 실행 스크립트 끝남."
  exit
fi

if kill -0 $PID ;then
  kill -SIGCONT $PID
  sleep $SECONDS
else 
  echo " 실행 스크립트 끝남."
  exit
fi
done
[/code]

내 자식들도 나처럼 !!

knhhack의 이미지

어찌됐든 겨우 다해서 지금 메일로 발송했습니다.
음~ 앞으론 저도 유닉스를 공부해야겠습니다.
제 경우엔 현재 별로 써 먹을땐 없어도 알아두면....
그럼 새로운 일주일 잘보내세요...

참 다른 답변해주신 모든 분께 감사드립니다.

그리고 어느분이 겁안나냐고 하셨는데, 이렇게라도 노력을해야죠... 그럼 방법이 없는데, 그냥 백지를 낼까요? 전 이렇게 생각하는데요.

서지훈의 이미지

봇의 승리 ㅡㅡㅋ
아무래도 익명게시를 막아야 하지 않을지 ?

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <beer.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

yuni의 이미지

아악 그만 링크된 곳을 눌러 보고 말았습니다. 히스토리를 지워 두어야 겠습니다.

위에 급하다고 하신분, 이제 닉스 계열에서 잘 일하시고 계시나 모르겠습니다.

-- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
어쩜 저의 이미지와 딱 맞는 귀여운 마스코트를 만드셨네요. 잠시 저의 아바타로 빌려갑니다.
==========================
안녕하세요? 인간이 덜 영글어서 실수가 많습니다. :-)
=====================
"지금하는 일을 꼭 완수하자."

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

서지훈의 이미지

무슨 사이트 였나요 ㅋ
아직 안찍어 봐서 몰라요 ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <beer.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

댓글 달기

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