2009-04-25 2 views
3

쉘에서 다음 중 하나 이상을 수행하고 싶습니다. - 메인 에서뿐만 아니라 프로그램에서 모든 함수를 호출하십시오. - 문자열 (argv가 아님)이 아닌 전달 매개 변수 - 프로그램 반환 int (메인의 반환 코드) - 쉘 수준 변수에 반환 된 값을 할당하여 다른 프로그램에 전달할 수 있습니다.프로그램 실행과 함수 호출이 통일 된 시스템이 있습니까?

아이디어를 얻을 수 있습니다. 예를 들어 python toplevel은 python 프로그램에 이것을 허용합니다. C++은 어떻습니까? 또는 허용 할 수있는 리눅스 ELF 대체?

답변

2

이 작업을 수행하는 운영 체제를 찾으려면 vxWorks 셸/C 인터프리터가이를 수행해야합니다.

하지만 실시간 운영체제 (GUI 없음) 인 vxWorks입니다.

2

Windows에서 DLL과 같은 동적 라이브러리의 이름으로 특정 함수를 호출 할 수있는 응용 프로그램을 제공하는 것은 그리 어렵지 않습니다. 단, int, float 및 fixed와 같은 매개 변수 유형의 제한된 선택 만 사용하면됩니다. 문자열.

그러나 대부분의 C++ 프로그램의 경우 충분하지 않습니다. 예를 들어, 귀하의 C + + 함수가 std :: map을 매개 변수로 socket에 동적 문자열을 가져 간다고 가정하십시오. 셸에서 내용을 말할 필요가 없는데 어떻게 맵을 만들 것입니까?

하지만 C++을 잊어 버릴 수 있다면, 정확히 말하자면 스몰 토크 (Smalltalk)라고하는 하나의 언어로 운영되는 운영 체제가 있습니다. 이 패러다임에 관심이 있다면 자유 소프트웨어 인 Squeak을 살펴보십시오.

+1

이미 Windows에서 이와 비슷한 프로그램이 있습니다. rundll32.exe –

+0

사실, 이는 REPL과 같은 일종의 이미지 기반 환경에서 작동합니다. 몇 가지 일반적인 Lisp 구현. 일반적인 시스템 호출을 감싸는 몇 가지 함수 만 작성하면됩니다. – Svante

0

시스템은 완전히 해석되어야합니다. 맞습니까? 그리고 당신이 부른 것들의 기능 서명을 어떻게 알 수 있습니까? 윈도우에서

+0

앱은 리플렉션으로이를 알 수 있습니다. 서명이 일치하지 않으면 앱에 오류 메시지가 표시 될 수 있습니다. – CDR

2

RUNDLL32.EXE USER32.DLL,SwapMouseButton 
1

당신이 c-repl 봤어 예를 들어, DLL 함수를 호출하는 RUNDLL32가?

관련 문제