프로그램을 시작할 때 명령 행 옵션을 구문 분석하려면 getopt()를 사용하십시오. 그러나 프로그램이 이미 백그라운드에서 실행중인 경우 어떻게합니까? 나는 정보를 찾을 수 없었다. 예를 들어 서버를 실행 중이지만 제대로 작동하는 방식으로 변경하려고한다고 가정 해 보겠습니다. 그것을하는 방법? 나는 리눅스에서 이것을하고 싶다.C로 이미 실행중인 프로그램에서 명령을 전달하는 방법
답변
이렇게하는 데 플랫폼 독립적 인 방법은 없습니다. C 프로그래밍 언어는 실행중인 프로그램과 통신하기위한 메커니즘을 지정하지 않습니다 (또는 존재 성을 요구합니다).
플랫폼 특정 코드 또는 플랫폼을 자체 휴대용으로 추상화하는 기존 라이브러리를 찾아야합니다.
Linux의 경우 Unix domain socket이이를 구현하는 한 가지 방법입니다. 다른 하나는 공유 메모리입니다.
Un * x 사용자는 many options입니다.
FIFO 파이프 구현하는 합리적이고 쉽게 보이는 :
이 당신이 할 수있는 몇 가지 방법이 있지만, 그들은 모두 공통 주제를 가지고 - 프로세스 간 통신을.
필자가 선호하는 방법은 일종의 소켓을 사용하는 것입니다 (일반적으로 요즘은 이러한 목적으로 ZMQ를 사용하지만 요즘은 ZMQ를 사용하기 전에 일반적으로 소켓을 읽습니다). Windows 또는 Unix에 의존하는지 여부에 따라 사용할 수있는 소켓 종류가 결정됩니다.
공유 메모리와 같은 다른 방법도 있습니다.하지만 "서버"에 대해 언급 했으므로 소켓이 가장 좋습니다. 나는 당신이 "클라이언트 서버 모델"을 연구 할 것을 제안한다.
내가 사용한 서버 중 가장 간단한 해결책은 파일을 만들고 서버에 10 초에 한 번씩 파일을 읽도록 요청하는 것입니다. 거기에 명령을 내려 놔. 그것은 크로스 플랫폼입니다.)
크로스 플랫폼 솔루션은 동시성 (예 : pthread) 또는 C++ (스레드 및 뮤텍스 라이브러리)의 새로운 표준을 사용하기 위해 몇 가지 표준 라이브러리를 사용하는 것입니다. 다른 명령은 뭔가를 실행하는 동안 일부 명령을 기다릴 스레드를 만듭니다.
구성 파일을 사용하여 프로그램에서 해당 파일의 변경 사항을 수신하도록 할 수 있습니다.
Linux에서 프로그래밍하는 경우 inotify (#include <linux/inotify.h>
)를 사용할 수 있습니다.
MacOS/iOS에서는 FSEvents를 사용합니다.
Windows의 경우 FindFirstChangeNotification을 사용하십시오.
- 1. 이미 실행중인 Java를 통해 명령을 실행하는 방법?
- 2. C#에서 이미 실행중인 명령 프롬프트에 명령을 전달하는 방법은 무엇입니까?
- 3. 이미 실행중인 실행 파일에 인수를 전달하는 Python
- 4. 이미 실행중인 Powershell 스크립트에 인수/명령을 전송하십시오.
- 5. 백그라운드에서 실행중인 프로그램에서 stdinput을 전달하는 방법은 무엇입니까?
- 6. 화이트는 이미 실행중인 응용 프로그램에서 어떻게 작동합니까?
- 7. 실행중인 python 프로세스와 javascript간에 데이터를 전달하는 방법
- 8. 이미 실행중인 애니메이션을 멈추는 방법
- 9. 이미 실행중인 쉘에서 콘솔을 통해 erlang 쉘 명령을 실행하십시오.
- 10. 이미 실행중인 WPF 시스템 트레이 응용 프로그램에서 창을 시작하려면 어떻게합니까?
- 11. 파이썬에서 실행중인 프로세스에 값을 전달하는 방법
- 12. PHP를 사용하여 이미 실행중인 CMD 프롬프트에 명령을 펌프하기
- 13. wpf에서 시스템 명령을 전달하는 방법
- 14. 실행중인 유증기 상자에 포트를 전달하는 방법
- 15. 이미 실행중인 프로세스에 명령 줄 인수를 전달하는 방법은 무엇입니까?
- 16. VB.NET 응용 프로그램에서 동일한 컴퓨터의 이미 실행중인 Java 응용 프로그램으로 변수를 전달하는 방법은 무엇입니까?
- 17. 리눅스에서 이미 실행중인 프로세스의 출력보기
- 18. 명령 줄을 통해 실행중인 응용 프로그램에 명령을 보내는 방법
- 19. 이미 실행중인 레이크 검사
- 20. 이미 실행중인 작업 취소
- 21. tomcat에서 실행중인 webapp에 명령을 보내십시오.
- 22. 이미 실행중인 활동을 통해 실행중인 활동으로 전환하는 방법
- 23. 파이썬에서 실행중인 명령을 종료합니다.
- 24. 실행중인 R 런타임에 명령을 전달
- 25. 이미 실행중인 JVM에 dll을 주입하려고합니까?
- 26. 이미 실행중인 Android 활동으로 돌아 오는 방법
- 27. Installshield : 이미 실행중인 Windows 서비스를 업데이트하는 방법
- 28. 이미 실행중인 hadoop 클러스터에 impala를 설치하는 방법
- 29. 이미 실행중인 응용 프로그램을 호출하는 방법
- 30. 이미 실행중인 프로세스의 프로세스 개체를 얻는 방법?
BTW를 사용하면 프로그램을 특수 HTTP 서버로 만들 수 있습니다 (예 : [libonion] (http://www.coralbits.com/libonion/) ...과 같은 일부 HTTP 서버 라이브러리 사용). 사용자는 프로그램과 통신하기 위해 특별한 URL을 열 수 있습니다. –