문제

내가 작업하고있는 정보 보안 실험실에서는 "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");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top