안녕하세요.
윈도에서 VC로 콘솔용 프로그램을 만들었습니다.
이 프로그램을 서비스로 올려서 구동을 하는데 문제가 발생하더군요.
프로그램 내에서 _popen ()을 호출하는데 계속 NULL을 리턴합니다.
콘솔상에서 구동할때는 아무 문제 없이 잘 동작하구요.
서비스로 돌아갈때는 stdin/out이 없기때문에 프로세스를 열고,
파이프를 연결 할 수 없어서 그런가.. 하는 생각이 드네요.
정말 서비스에서는 popen을 사용할 수 없는지 궁금합니다.
그리고, 사용할 수 없다면 popen과 같이 프로세스의 stdin/out을 제어
할 수 있는 다른 방법(함수)이 있는지 궁금합니다.
Windows 서비스는 데스크톱과 분리된 세션 0에서 실행돼 stdin/stdout 핸들이 없어서 _popen 이 NULL을 반환하는 것이 정상입니다.
대신 CreatePipe 로 파이프를 직접 만들고 CreateProcess 의 STARTUPINFO 에 연결하는 방식을 쓰면 서비스에서도 프로세스 입출력을 제어할 수 있습니다.