c언어에서 외부 프로그램 실행시키기

KimJH의 이미지

fork()로 프로세스 띄워서 system()으로 명령을 주는 방식으로
x윈도상의 애플리케이션을 실행시키고 싶은데요
이것저것해봐도 잘 안되네요
윈도우 커맨드 창에서 명령어 치는 것 처럼 리눅스도 터미널에서 GUI 프로그램 실행이 가능한가요?

system()대신에 execv()도 있다고 하는데, 어떤게 더 적절할른지...

익명사용자의 이미지

개인적으로 "윈도우처럼.... 리눅스도 ..." 말에 상당한 반감이 일어나네요.

X window 는 네트웍기반의 GUI 환경을 제공합니다.
지구반대편의 기계에 접속해서 실행시킨 프로그램이 내 PC 모니터에 나온다거나,
내 PC 에서 내가 실행시켰는데, 지구반대편의 기계에 달린 모니터에 뜬다거나 합니다.
내 PC 에서 내가 실행시켜서 내 PC에 달린 모니터에 나오는 것은 기본입니다.

xterm 등은 터미널 에뮬레이터입니다.
쉘을 실행시켜주므로 콘솔과 같은 환경을 제공하기는 하지만,
이것을 가지고 ms windows 의 커맨드창과 비교하는 것은 재고해주세요.

답변을 얻으셨을지 모르겠지만... 노파심에 몇 자 더 적자면,
X 서버와 접속만 할 수 있다면 환경은 상관없습니다.
본인은 학부생 때 전산실 관리자의 배경화면을 바꾸는 장난을 많이 쳤더랬습니다.
무슨 이유인지 몰라도 그 분은 접속제한을 하지 않고 그냥 쓰시길래.

KimJH의 이미지

x윈도우 터미널상에서 간단한 c프로그램을 실행시켰을 때
모질라 웹브라우저가 실행된다던가 하는 기능을 어떤 방식으로 구현해야 하는가를 질문드렸습니다..

그 표현의 잘못은 리눅스보다 윈도우가 편한.. 저의 하찮음에서 기인한것이니 너그러이 봐주시길..^^

서지훈의 이미지

현재 상태가 X상태 인지 확인을 해보시고...
그래도 안되면 popen()으로 실행 후 에러메시지를 redirection해서 확인 해보세요.
그리고... 환경 변수도...

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

#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);