단일 시스템 () 호출을 사용하여 C에서 여러 명령을 실행합니다.
문제
내가 작업하고있는 정보 보안 실험실에서는 "System ()"(C, Fedora에서 실행)에 대한 단일 호출로 여러 명령을 실행하는 임무를 맡았습니다. System ()을 통해 명령보다 더 많이 실행할 수있는 구문은 무엇입니까? (프로그램이 System () 호출을 통해 OS와 상호 작용하는 경우 원격 컴퓨터에서 실행되는 프로그램을 통해 임의의 명령을 실행할 수 있다는 아이디어.)
즉:
char command[] = "????? \r\n";
system(command);
해결책
명령을 실행하기 위해 호출되는 쉘에 따라 다르지만 일반적으로 대부분의 쉘은 사용합니다. ;
명령을 분리하려면 이와 같은 것이 작동합니다.
command1; command2; command3
편집하다
@dicroce가 언급했듯이 사용할 수 있습니다 &&
대신에 ;
0이 아닌 값을 반환하는 첫 번째 명령에서 실행을 중지합니다. 이것은 원하거나 바람직하지 않을 수 있습니다 (일부 명령은 성공시 0이 아닌 것으로 반환 할 수 있습니다). 그러나 실패 할 수있는 명령을 처리하려는 경우 시스템 ()에서 여러 명령을 함께 문자하지 않아야합니다. 실패가 어디에서 발생했는지 결정하는 방법. 이 경우 가장 좋은 방법은 한 번에 하나의 명령을 실행하거나 적절한 오류 처리를 수행하는 쉘 스크립트를 작성하고 대신 호출하는 것입니다.
다른 팁
명령 사이에 &&를 사용하십시오. 성공적인 오류 코드를 반환하는 한 명령을 계속 실행한다는 이점이 있습니다. 예시:
"CD /Proc && cat cpuinfo"
한 가지 가능성이 즉시 떠 오릅니다. 모든 명령을 스크립트에 작성한 다음 다음과 같이 실행할 수 있습니다.
system ("cmd.exe /c \"x.cmd\"");
또는 이제 당신이 페도라에서 달리는 것을 보았습니다.
system ("x.sh");