문제

C++에 다음 프로그램이 있습니다.

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

이를 실행하고 컴파일하고 예를 들어 "helo"를 입력하면 내 프로그램에서 오류가 인쇄됩니다.

  "helo" not found.

이 오류가 표시되지 않게 할 수 있나요?시스템 명령에서 오류를 비활성화하는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 길을 바꿀 수 없습니다 system 오류가 표시됩니다. C 및 C ++는 이와 관련하여 구현에 대한 요구 사항을 거의 또는 전혀 넣지 않으므로 많은 부분이 지정되지 않은 상태로 남겨져 최종적으로 유연하게 만들 수 있습니다.

보다 정확한 제어를 원한다면 런타임 라이브러리 또는 작동 시스템 인터페이스의 기능을 사용해야합니다. 노력하다 execvp (보다 man execvp) Linux/Unix 또는 Windows Systems 용 CreateProcess 함수에서 Windows API를 사용하여 오류 처리 및 기타 항목을 크게 제어 할 수 있습니다.

다른 팁

당신은 리눅스에 있습니까?"./hello"를 입력해 보세요.

이것이 작동한다면 현재 디렉터리(".")가 검색 ​​경로에 없기 때문입니다.컴파일된 프로그램이 디렉터리에 "있음"을 나타내야 합니다.

또는 다음과 같은 작업을 수행할 수 있습니다.

내보내기 PATH=$PATH:.

""추가됩니다. " (현재 디렉토리) 검색 경로에.

Windows를 사용 중이라면 "hello.exe"를 시도해 보세요.

Linux에있는 경우 오류 출력을 null 장치?

strcat(buf, "2> /dev/null");
system(buf);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top