작업관리자에서 점유율을 가장 많이 먹는 걸 찾아보니 Rundll32.dll에 물려있는 한 모듈이 문제였습니다.
[C++] 윈도우에서 돌아가는 서비스의 상태를 확인하는 방법(및 본인의 단계별 삽질)
명령 프롬프트를 이용한 방법, ControlService를 이용한 방법, QueryServiceStatusEx를 이용한 방법을 소개합니다.
[C++] 명령창을 띄우지 않고 명령 프롬프트를 실행하기 (결과값 저장하기)
popen 함수를 이용하면 됩니다. popen 함수는 system 함수처럼 명령 프롬프트를 실행할 수 있을 뿐만 아니라 명령을 수행했을때 나오는 출력값을 반환합니다.
[C++] 출력창에 결과를 출력하지 않으면서 명령 프롬프트를 실행하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <stdlib.h> int main(void) { // 모두 나옴 char * command_1 = "calc.exe | echo hello"; // 단순 메시지 출력안함 char * command_2 = "calc.exe | echo hello > nul"; // 에러메시지 출력됨 char * command_3 = "cal.exe | echo hello > nul"; // 에러메시지도 출력 안함 char * command_4 = "cal.exe | echo hello > nul 2>&1"; system(command_1); system(command_2); system(command_3); system(command_4); return 0; } |
만약 특정한 명령어를 실행시키는데 결과값이 창에 뜨지 않게 하고 싶으면 명령어 끝에 “> nul”을 붙여주면 됩니다.
에러 메시지까지 출력시키지 않고 싶다면 “> nul 2>&1″을 붙여주면 됩니다.
두 번째 코드는 계산기는 실행되지만 hello는 출력되지 않습니다.
네 번째 코드는 특정 명령어를 이용할 수 없을 때 등의 에러 메시지도 출력되지 않게 됩니다.