andrewrk
그는 물었다 12년 전
9

프로그램을 통해 메시지를 보낼 명령줄이

저는 이 프로그램을 we& # 39, ll call it 호스트입니다. 하지만 온갖 좋은 얘기입니다 호스트입니다 높여줍니까 수 있어야 합니다 # 39 의 it& 동의하려면 입력입니다 명령줄이 통해 실행하는 동안 . 즉, 이 회사는 또 다른 어떻게든 템플릿프로세스데이터추가프로세스 데이터 전송 후 끝냅니다끝내기. 예를 들어, 데릭쉐퍼드와 일을 할 수 있는 이:

./Host --blahblah 3 6 3 5

이렇게 하면 일부 기능을 호스트입니다 불렀으매 호출하십시오 다니엘을 짐작이지만요.

handleBlahBlah(int x1, int y1, int x2, int y2){
  //do some more sweet stuff
}

호스트가 C 프로그램을 지원할 필요가 없으며, 여러 인스턴스입니다.

예를 들어 Amarok 음악 플레이어이다. 함께 하고, amarok pause&quot &quot 호스팅하면서 Amarok 입력할 수 있습니다. 또 음식들요 일시정지합니다

이런 일을 할 수 있는 데릭쉐퍼드와 Linux, Windows. 특히 리눅스.

도대체 이 깨끗한 구축하는 방법은?

Adam Haile
그는 12년 전 댓글을 달았습니다
0

이 프로그램은 이미 실행되고 인수만 통과시킬 때 이므로 있습니까? 어떤 OS 로만스였나 기술입니까 프로그래밍되었습니다 지우시겠습니까?

답변 6 개

Windows 에서 사용할 수 있습니다; d # 39 조교하실 경우 I& 떠날려하면 수신하십시오 메시지, 그러나 나는 ',' 숨겨진 창을 사용한 ./ solaris. 운영까지도 뭔가 unix 기반.

이 경우, d # 39 I& 검색하기를 수신기마다 [명명된 파이프를] (http://en.wikipedia.org/wiki/Named_pipe). Sun 은 [자습서는] (http://developers.sun.com/solaris/articles/named_pipes.html) 에 있는 명명된 파이프를 유용할 수 있습니다.

이 프로그램은 아마도 파이프 만듭다 귀를. 외상때문에 별도의 명령줄이 스크립트입니다 열어보려면 파이프 및 그냥 에코 명령줄 인수를 되는 것이다.

    • 수정하십시오 보낼 수 있는 프로그램을 사용하는 대신 명령줄이 너회는 지원하기 위해 별도의 스크립트입니다. # 39 건, 이 경우 d do you& 동일한 기본. # 39 에 인수, 명령줄이 http://support. it& 프로그램에 엿볼 수 있다면 이 &quot 파이프하시겠습니까 열어보려면 main"; 인스턴스에서는 프로그램 및 전송할 수 있는 인수만 후란다.
Derek Park
jschmier
그는 10년 전 댓글을 달았습니다
1

명명된 파이프 방법론뿐만 +1 I& # 39, ve 이를 활용한 여러 번 및 작동하잖아 꽤 잘. # 39, 유닉스 소켓을 사용하는 경우의 i& 역시 이제는 기본 프로그램에 필요한 데이터를 명령줄이 반환되기를 스크립트화 및 프로그램.

실행할 수 있도록 하는 경우, 플랫폼, 들을 수 있는 TCP 포트 및 인스턴스입니다 고려해야 할 수 있는 인스턴스입니다 볼지옥으로 증가한 명령줄이 해당 포트에 대한 메시지를 전송할 수 있습니다.

[Bsbab-unix 소켓] 를 사용하여 내가 제안하세요 (http://en.wikipedia.org/wiki/Unix_domain_socket) 또는 [dcop] (http://en.wikipedia.org/wiki/D-Bus). 소켓을 사용하는 경우, re 유닉스 소켓을 익숙한 you& 빠를 수 있습니다 # 39 만 하는 반면, 프로그래밍, 몇 가지 작업을 쉽게 할 수 있는 기능을 구현하는 데 익숙한 객체중심형 dcop 집중할 수 없다.

Take a look at [Beej& # 39 의 안내선 bsbab-unix IPC] (http://beej.us/guide/bgipc/output/html/multipage/index.html), 특히 대한 장 [유닉스 소켓을] (http://beej.us/guide/bgipc/output/html/multipage/unixsock.html).

어떤 이는 아무도 여기에 있다 "고 전했다.

39, t get 출발하는 here&quot 너회가 can& ";).

명령줄이 경우 호출되었을 프로그램 '에서만 사용 가능한 것.

, 필리나나미 인수만 .&quot &quot 된 예입니다. 필리나나미 통신하도록 필리나나미 한 번 실행 중인 프로그램의 서로 통신할 수 있는 두 가지 방법으로 인스턴스들도 이벤트여야만 통해 성취될 수 있다.

답을 얻기 위해 다른 방법을 제안하십시오 통신.

    • 아마록 같은 다른 존재를 발견할 수 있는 프로그램 요구사항뿐 인스턴스입니다 이를 위해 어떤 역할을 해야 한다, 주요 역할을 스스로 알 수 있다. 영구 메시지 수신 / 서버 또는 작은 역할을 한 샷 메시지를 보낸 사람.

실제로 말을해야합니다 필리나나미 편집할 수 있도록 표시됩니다.

나는 한 기법을 볼 수 있으며, 할 수 있다 '' 프로그램을 호스트입니다 &quot shell&quot. 실제 프로그램였어 단축시킵니다 예를 들어 응용 프로그램을 실행할 때 일반적으로 (예: 이 프로그램은 './Host'), 기본 &quot 포크하지 꽂으십시오 app&quot. 코드 부분입니다. 좋아하는 프로그램 시작할 때 방식으로 신호를 보내고 싶은 제안됩니다 호스팅하면서 인스턴스입니다 (예: /host 재시작해야 메시지 보내기 '-') 이 프로그램은 포크하지 꽂으십시오 &quot 메시지일까요 sender"; 코드 부분입니다. # 39 의 두 개의 앱을 it& 한 것과 같습니다. # 39 는 사용할 수 있는 또 다른 옵션은 doesn& ',' t ',' 호스트입니다 것이라는 메시지를 포크하지 &quot sender&quot. 앱을 실행하고 &quot 수 있으며, 기본 app&quot. 따라 별도의 실행가능파일 (예: 'Host_core') '' 호스트입니다 펼칠 수 있는 샀다.

이 주 app&quot "; 일부분으로 프로그램은 함정이거나 메시지를 받도록 하는 통신 채널을 열고, 메시지, 그리고 &quot sender&quot. 채널 및 사용 할 수 있는 부품을 접속하십시오 迈向 메시지를 보냅니다. 간 메시지 보내기 위한 여러 가지 옵션을 사용할 수 있습니다. 다른 일반적인 방식은 파이프소켓. Os 에 따라 추가 옵션을 사용할 수 있을 수 있습니다. 예를 들어, QNX 는 BeOS / 하이쿠 %s/dbase/ext_table. 채널브메사주. 또한 이 같은 기능을 잘 찾을 수 있는 최대 라리브러리 둘러싸여집니다 lcm.

그래서 여기 요점이지 누락될 수 있지만, s, C # 39 는 두 인수만 program& 디푸르트 의해 메인 함수 아리스, 수가 인수만 (최소한 하나의) 및 argv (또는 arg 벡터) 인수 목록. 그냥 인수 및 security. 올바른 방법을 통해 분석할 수 있습니다. 예를 들면 다음과 같습니다.

 int main(int argc, *argv[])
 {
     /*loop through each argument and take action*/
      while (--argc > 0)
      {
           printf(%s%s, *++argv, (argc > 1) ? " " : "");
      }
 } 

모든 인수만 죽이려하겠어요 인쇄하십시오 화면. 그래서 나는 내가 아무런 희망이 없는 C # 39, t haven& guru 를 말해야 한다.

편집: 하지만 뭔가 다른 확인 후, 그는 wasn& # 39, t 는 지우시겠습니까 질문 전에 돌아간다. # 39, 건너뛰려면 on my 담당자별로 don& 없다.