c shell system programming tutorial with examples
이 자습서에서는 C ++ 프로그램에서 운영 체제 명령을 호출하는 데 사용되는 C ++ 셸 또는 시스템 () 호출에 대한 자세한 설명을 제공합니다.
소프트웨어 프로그래밍 세계에서 대부분의 운영 체제 API는 C를 대상으로합니다. C ++ 언어는 C ++ 코드에서 C 함수 호출을 직접 지원합니다.
따라서이 경우 C ++도 시스템 프로그래밍 언어가됩니다. C ++는 C / C ++ 프로그램에서 운영 체제 명령을 호출하는 'system ()'명령을 제공합니다.
즉, system () 명령이 C ++ 쉘 명령을 실행한다고 말할 수 있습니다. 이 튜토리얼에서는 쉘 명령 또는 시스템 () 실행에 대해 자세히 설명합니다.
=> 여기에서 간단한 C ++ 교육 시리즈를 살펴보십시오.
소프트웨어 개발 라이프 사이클 설계 단계
학습 내용 :
C ++ 시스템 호출
이제 예제를 통해 시스템 호출 및 세부 사항에 대해 논의하겠습니다.
기능 프로토 타입 : int 시스템 (const char * 명령);
매개 변수 :
command => 실행할 명령을 포함하는 C- 문자열.
널 포인터가 전달되면 명령 프로세서에 대한 검사 만 수행됩니다.
반환 값 : int 값을 반환합니다. 반환되는 값은 C 스타일 문자열이 인수로 지정되었는지 또는 널 포인터가 지정되었는지에 따라 다릅니다.
- 널 포인터 => 널 포인터가 지정되면 명령 프로세서가 사용 가능하면 0이 아닌 값을 리턴하고 그렇지 않으면 0을 리턴합니다.
- 지정된 명령 => 명령이 지정되면 일반적으로 상태 코드가 반환되지만 반환되는 값은 시스템 및 라이브러리 구현에 따라 다릅니다.
기술: 시스템 명령은 인수로 제공된 명령을 실행합니다. 명령을 실행하여 반환되는 값은 일반적으로 시스템 및 라이브러리 구현에 따라 다릅니다. 명령 대신 널 포인터가 전달되면이 호출은 단순히 명령 프로세서를 사용할 수 있는지 여부를 확인합니다.
이 호출은 명령 프로세서를 사용할 수 있으면 0이 아닌 값을 반환하고 그렇지 않으면 0을 반환합니다.
시스템 ()을 사용하면 운영 체제에서 허용하는 거의 모든 명령을 실행할 수 있습니다. 예를 들면 시스템 ( 'dir') 또는 시스템 ( 'ls')을 똑같이 쉽게 실행할 수 있습니다. 사실 우리는 프로그램에서 GCC 컴파일러를 호출 할 수도 있습니다.
다음은 C ++ 셸 명령을 실행하기 위해 C ++에서 사용되는 시스템 명령의 몇 가지 예입니다.
예 1 :
이 예는 널 포인터를 인수로 사용하는 시스템 명령 데모를 보여줍니다.
#include #include using namespace std; int main () { int i; cout<< 'Check if command processor is available...'< 산출:
위의 프로그램에서 먼저 시스템 호출에 null을 전달하여 명령 프로세서를 사용할 수 있는지 확인합니다. 명령 프로세서를 사용할 수 있으면 dir 명령을 실행합니다. 명령 프로세서를 사용할 수 없으면 오류와 함께 프로그램을 종료합니다.
예 2 :
아래 예는 출력이 텍스트 파일 'output.txt'로 파이프되는 ls 명령의 실행을 보여줍니다. 시스템 () 호출이 실행 된 후 output.txt의 내용을 인쇄합니다.
Windows XP 용 최고의 무료 방화벽
#include #include #include int main() { std::system('ls -l >output.txt'); // execute the UNIX command 'ls -l >test.txt' std::cout << std::ifstream('output.txt').rdbuf(); }
산출:
위 프로그램의 출력은 'output.txt'파일의 내용이며 ls 명령의 출력 일뿐입니다.
예 3 :
아래의 C ++ 프로그램은 이전 예제의 연속입니다. 여기서는 시스템 호출을 사용하여 output.txt로 리디렉션되는 ls 명령을 실행합니다. 그런 다음 'rm'(remove) 명령으로 또 다른 시스템 호출을 실행하여 output.txt 파일을 제거합니다.
그런 다음 ls 명령을 다시 실행하고 이번에는 출력을 다른 파일 (예 : text.txt)로 리디렉션합니다. 마지막으로 text.txt 파일의 내용을 인쇄합니다.
#include #include #include using namespace std; int main() { // execute the UNIX command 'ls -l >output.txt' system('ls -l >output.txt'); cout << ifstream('output.txt').rdbuf(); // execute the UNIX command 'rm output.txt' system('rm output.txt'); cout<<'removed output.txt'<text.txt' cout<<'ls after removing output.txt & creating text.txt'<text.txt'); cout << ifstream('text.txt').rdbuf(); }
산출:
C ++ 시스템 일시 중지
시스템 ( 'pause') 명령은 실행될 때 일시적으로 작업을 중지합니다. 시스템 ( '일시 중지') 호출은 운영 체제에 따라 다르며 다음 단계를 수행합니다.
- 이 호출은 프로그램을 일시적으로 일시 중단하고 운영 체제 셸을 열도록 운영 체제에 신호를 보냅니다.
- 운영 체제는 명령을 실행할 메모리를 할당합니다.
- 그런 다음 메모리 할당을 해제하고 운영 체제를 종료 한 다음 일시 중단 된 프로그램을 다시 시작합니다.
다음 프로그램은 시스템 ( '일시 중지') 호출의 예를 보여줍니다.
#include #include using namespace std; int main () { cout << 'Hello World!' << endl; system('pause'); return 0; }
산출:
이미 언급했듯이 시스템 ( '일시 중지') 호출은 매우 느리고 운영 체제에 따라 다릅니다. 위에서 언급 한 단계는 실행하기가 무겁습니다.
또한 시스템 호출은 일부 보안 위험을 초래할 수 있습니다. 따라서 우리는 일반적으로 프로그램에서 시스템 ( '일시 중지') 호출에 의존하지 않습니다.
대신 cin.get을 사용하여 아래 프로그램과 같이 시스템과 동일한 기능 ( '일시 중지')을 수행 할 수 있습니다.
#include #include using namespace std; int main () { cout << 'This is SoftwareTestingHelp.com' << endl; cin.get(); // same as getchar() return 0; }
산출:
위와 같이 cin.get을 사용하여 키를 누를 때까지 출력을 일시 중지 할 수 있습니다. 시스템 ( '일시 중지')과 달리 운영 체제에 종속되지 않습니다. 또한 시스템을 실행할 때 수행되는 단계 ( '일시 중지')를 따르지 않습니다.
시스템 대 라이브러리 기능
시스템 호출은 운영 체제에 따라 다릅니다. 또한 리소스가 매우 느리고 무겁습니다. 라이브러리 기능은 OS에 종속되지 않습니다. 더 빠르고 리소스 나 메모리를 너무 많이 소비하지 않습니다.
시스템 호출의 가장 일반적인 용도는 시스템 ( 'pause') 및 시스템 ( 'cls') 명령입니다. 라이브러리 함수는 수학, 파일 I / O 등과 관련된 함수를 포함하는 내장 함수입니다.
결론
이 C ++ 셸 자습서에서는 다양한 시스템 기능에 대해 설명했습니다. 명령 프로세서를 사용할 수 있는지 여부를 확인하는 시스템 명령에 널 포인터를 전달하는 예제를 보았습니다. 또한 시스템 ( '일시 중지') 명령과 그 대안에 대해 자세히 설명했습니다.
추천 도서