시스템 함수 호출을 사용하여 쉘 명령 실행 [닫기]

시스템 함수 호출을 사용하여 쉘 명령 실행 [닫기]

시스템 호출을 사용하여 일부 디렉터리와 파일을 만들려고 합니다. 전임자)

system("mkdir directory3");

시작하는 데 어려움을 겪었습니다. 이것이 내가 지금까지 가지고 있는 것입니다:

#include <stdio.h>
int main(int argc, const char * argv[])
{
    system(“mkdir dir1”);
    system(“mkdir dir2”);
    system(“mkdir dir3);
    system(touch file1”);
    system(“touch file2”);
    system(“cd dir1”);
    system(“mkdir dir4”);
    system(“cd dir4”);
    system(“touch file4”);
    system(“cd”);    
}

이것이 올바른 형식입니까?

답변1

게시하기 전에 코드를 테스트했다고 가정하고(또는 구문 오류가 될 누락된 따옴표가 포함되어 있기 때문에 아닐 수도 있음) 기본적으로 명령을 제외한 모든 것이 cd작동한다는 것을 발견했습니다.

cd외부 프로세스를 호출하고 해당 작업 디렉터리를 변경한 다음 외부 명령이 즉시 종료되므로 이러한 명령은 작동하지 않으므로 명령이 적용되지 않습니다.

다른 명령 외에도하다일해라, 그러면 안 된다. 호출하는 모든 명령( mkdir, cdtouch)은 모두 하나 또는 두 개의 C 함수 호출(실제로는 시스템 호출)로 수행될 수 있으므로 외부 명령으로 실행하는 데 따른 성능 및 보안상의 불이익이 실제로 필요하지 않습니다.

system("mkdir foo") → mkdir("foo", 0777)
system("touch foo") → close(open("foo", O_WRONLY|O_CREAT, 0777))
chdir("foo")

(물론 오류 검사는 독자의 연습 문제로 남겨 둡니다.)

관련 정보