문제

C ++의 Linux 시스템에 OS 버전, 하드 디스크 공간, 디스크 공간 및 RAM과 같은 정보를 얻으려고합니다. 나는 내가 사용할 수 있다는 것을 안다 system() 다른 Linux 명령을 실행하고 출력을 캡처하려면 (현재하고있는 일). 더 나은 방법이 있는지 궁금합니다. C ++ 표준 라이브러리에 운영 체제에서 정보를 얻는 데 사용할 수있는 것이 있습니까?

도움이 되었습니까?

해결책

*nix 명령을 사용하여 시스템을 통해 사용하는 경우

그런 다음 사람이 맨 페이지의 하단으로 스크롤하면 일반적으로 관련 C 시스템 호출이 관련된 것을 보여줍니다.

Example:  man uname:
SEE ALSO
       uname(2), getdomainname(2), gethostname(2)


Explanation of numbers:

(1): User UNIX Command
(2): Unix and C system calls
(3): C Library routines
(4): Special file names
(5): File formats
(6): 
(7):
(8): System admin commands

따라서 시스템을 사용하는 경우 ( "Uname"). Man Page에서 Uname C 시스템 호출도 있음을 알 수 있습니다 (Uname (2)). 따라서 이제 'Man 2 Uname'을 수행하여 C 시스템을 사용하는 방법에 대한 정보를 얻을 수 있습니다.

다른 팁

이러한 목적으로 C ++ 표준 라이브러리에는 아무것도 없습니다. 당신이 사용할 수있는 라이브러리는입니다 libhal, 프로그램의 관점을 하드웨어에 대한 관점을 추상화하고 다양한 정보를 수집합니다. /proc, /sys 다른 사람. , 아래로 스크롤하면 비공식 C ++ 바인딩도 사용 가능한 것 같습니다 (Libhal은 C ++ 프로그램에서도 잘 작동하는 반면 테스트하지는 않았습니다). 명령을 사용하십시오 lshal HAL에서 사용할 수있는 모든 장치 정보를 표시합니다.

사용하고 싶지 않다면 Litb에서 알 수 있듯이, 당신은 /Proc FileSystem, 그것이 당신의 시스템에 있으면. 이것은 가장 플랫폼 독립적 인 일을하는 방법이 아니며, 많은 경우 파일을 선택하기 위해 약간의 구문 분석을해야합니다.

Hal은 이러한 세부 사항을 많이 추상화한다고 생각하지만 라이브러리를 사용하는 것이 옵션이 아닌 경우 /Proc에서 바로 읽을 수 있다는 것을 알고 있습니다.

시스템 정보는 정의상 휴대용이 아니므로 표준 솔루션이 없습니다. 최선의 방법은 대부분의 작업을 수행하는 라이브러리를 사용하는 것입니다. 그러한 크로스 플랫폼 라이브러리 중 하나 (현재 Linux별로 HAL과 달리)는 다음과 같습니다. 시가 API, 오픈 소스 BTW입니다. 나는 많은 문제없이 C ++ 프로젝트에서 그것을 사용했습니다 (설치는 약간 비표준이지만 쉽게 알아낼 수 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top