system()함수에서~머리아파 죽겠습니다. 고수님들 꼭 도와주세요

ins878의 이미지

리눅스 프로그램밍을 열심히 공부하는 한 대학생입니다.

다름이 아니라, 학교에서 간단한 프로젝트를 하는데, 교수님이 리눅스용 프로그램은 안되고 윈도우용 프로그램을 만들라고 하더군요. 그래서 할 수 없이 터보C로 간단한 윈도우 시스템 정보를 보여주는 프로그램을 짜는데, 제가 물어 볼려고 하는 것은 윈도우에 시스템 정보에 대해서가 아닙니다. (절대아닙니다)
(저는 윈도우를 게임용으로 밖에 사용하지 않습니다. 그냥 리눅스를 사랑하고 배우고 싶어하는 한 학생입니다. 고수님들 절대로 이 글을 그냥 넘기지 마세요~ 부탁입니다. 간혹 MS윈도우 말만 나오면 그냥 지나치는 고수님들이계셔서~^^)
윈도우에 보니깐, systeminfo라는 프로그램이 있더군요. 도스상에서 간단한 시스템 정보를 보여줍니다. 이것을 systeminfo > read.txt 하면 시스템 정보가 txt파일로 저장이 되더군요. 리눅스 명령어와 똑같이...
문제는 터보C의 system()함수에 있습니다. system(const char *string) 함수가 외부프로그램(명령어)을 실행시켜주는 함수인 걸로 알고 있습니다. 리눅스에서는 잘 먹히는 이 함수가 터보C로 해서 윈도우XP의 도스상에서 실행을 하니깐 먹히질 않습니다. 에러메시지도 없고, 그냥 한 빈라인을 보여주고 프로그램을 종료하더군요. XP에 있는 도스가 에뮬레이터라 그런가요? 아니면, 제가 무슨 실수라도 한 것인지~~ 이것이 되어야 다음 진행이 되는데~ 미치겠습니다. 학교에서는 리눅스용은 안된다고 하고~ 아~ 소스코드를 올려놓겠습니다. 뭐가 문제인지 고수님들 부탁드립니다.

/*####################################*/

#include <stdio.h>
#include <stdlib.h>
#include <process.h>

void main()
{
char buffer[256];

//sprintf(buffer,"c:/\windows/\system32/systeminfo.exe");
sprintf(buffer,"systeminfo");
system(buffer);
//spawnlp(P_WAIT,"winsysinfo","> c:/\read.txt");

/*######################################*/

혹시나 해서 exec~ 류의 함수도 사용해 봤지만 똑같습니다. 터보C 자료를 찾아보니깐 spawnlp라는 함수도 있던데, 이것을 사용해도 똑같습니다. 제 생각으로는 도스때문인 것 같은데~ 고수님들 제발 좋은 조언 부탁드립니다.

File attachments: 
첨부파일 크기
Image icon winsysinfo.jpg42.2 KB
pynoos의 이미지

역슬래시를 /\ 으로 했군요.. \\ 으로 해보세요

ins878의 이미지

pynoos님 \\로 해도 똑같아요~ 파일이 생기질 않아요~

다시 한번 부탁드립니다. T.T

pynoos의 이미지

system 의 return 값을 확인해보세요.
제대로 실행되었나..

yielding의 이미지

맥에서는 잘되군요..
그런데 교수님이 윈도우용을 만들라고 했는데 도스용 프로그램으로 이미 만들어진 윈도우용 ㅍ로그램을 띄우는거는 약간 출제의 의도를 벗어난게 아닌가요 ^^ 교수님은 아마 visual c++로 윈도우즈 응용프로그램을 말씀하신거 같은데..

Life rushes on, we are distracted

ins878의 이미지

제가 말을 잘 못한것 같네요~ 학교에서 듣는 과목이 c언어 입니다. 터보C++4.5 for window를 사용해서 배우고 있는데, 학교에서는 windows프로그래밍을 아직배우지 않고 있습니다. 그냥 C언어있데, 말이 윈도우즈용이지, 사실 도스상에서 돌아가는 프로그램입니다. 윈도우즈프로그래밍이 아닌~
제가 구현하려고 하는 것은 systeminfo라는 명령어를 실행시키 나오는 파일을 GUI로 이쁘게 보여주려고 하는 것입니다. (아래 첨부파일)
그런데~ 리눅스에서는 잘돌아가는 system()함수가 윈도우에서도 잘 돌아갈 것이라는 생각으로 시작을 했는데, 지금 system()함수에서 막혔습니다.
리턴값을 확인해도 이상이 없습니다. if문을 써서 확인해 봤는데, 이상이 없이 실행이 된 것으로 나오더군요~ 그런데, 실제 확인해 보면 안되요~
아~ 이 문제를 어떻게 해야할지~ 고수님들~ 부탁드립니다. 아니면, 다른 대안이라고 없는지~ T.T

댓글 첨부 파일: 
첨부파일 크기
Image icon 0바이트
익명 사용자의 이미지

16비트 프로그램에서 32비트 프로그램 호출이 :evil:
아닌가? 합니다.
(real mode -> protected mode )
(어찌보면, 정수가 실수를 포함하는 관계같은...아이러니...)

불가능한 것을 호출한 사례로 보입니다.
게다가 system()등의 함수는 현재 운영체제에 의존적인
함수인데, DOS모드(리얼모드)응용에서 콜한 시스템관련
루틴들은 전부 16비트일것으로(도스시스템) 보입니다.

따라서, 16비트용 systeminfo.exe를 만들고 나서야
원만하게 프로그램이 돌지 않겠는가? 라는 예측이....
아니면, 32비트 컴파일러로 프로그램을 재컴파일한후 실행해보는 방법도....

ins878의 이미지

혹시나해서, 위 고수님들 조언에 따라, 32비트 컴파일러로 실행을 해봤습니다.
혹시나 했는데, 역시나 잘 작동이 되더군요~ 자료를 찾아보니, 터보C 도스용은 16비트 컴파일러 이고, 윈도우용은 32비트 컴파일러라 16비트에서 지원하는 몇 개의 명령어를 지원하지 안더군요. (예로, conio.h dos.h등의 몇가지 함수)
또, 싱글프로세스 모드의 도스에서 하드웨어 직접제어 컨트롤할 수 있는 것이 윈도우 운영체제는 멀티프로세스 시스템이라 못하게 하더군요.
그래서, 32비트 컴파일러로 만드기로 했습니다. 근데, 그래픽 함수가 지원해주는 것이 몇가지 없어서, 일일이 구현하고 있습니다.
이번 문제를 보면서 리눅스나 윈도우즈의 운영체제를 떠나, 16비트와 32비트의 컴파일러 차이가 이런거구나 하는 생각이 듭니다.
초보 리눅서님들도 저같은 실수를 저지르지 않길~ 바랍니다.
고수님들 정말로 감사드립니다. ^^

댓글 달기

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