인디노트

Mac에서 Objective-C를 사용하여 시스템을 종료하는 코드 본문

소스 팁/Objective C, Swift, iOS, macOS

Mac에서 Objective-C를 사용하여 시스템을 종료하는 코드

인디개발자 2023. 3. 29. 14:49
// import 필요
#import <Carbon/Carbon.h>

// ...

// 시스템 종료 함수
void ShutDown()
{
    // 예약된 종료 요청을 만듭니다
    AuthorizationRef authorizationRef;
    AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
    const char *tool = "/sbin/shutdown";
    char *argv[3] = { "-h", "now", NULL };
    FILE *pipe = NULL;
    OSStatus status = AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, argv, &pipe);
    
    // 에러 처리
    if (status != errAuthorizationSuccess) {
        NSLog(@"Error: Failed to shutdown system (status=%d)", status);
    }
}

// ...

// ShutDown 함수를 호출하여 시스템을 종료합니다
ShutDown();

위 코드는 Carbon 프레임워크의 AuthorizationExecuteWithPrivileges 함수를 사용하여 /sbin/shutdown 명령을 실행합니다. 이 함수는 예약된 종료 요청을 만들어 시스템을 종료합니다. AuthorizationCreate 함수를 사용하여 권한을 얻어야 합니다. 또한, OSStatus를 사용하여 AuthorizationExecuteWithPrivileges 함수 호출의 결과를 확인합니다.

위 코드는 시스템 종료 명령을 수행하는 것이므로 주의해서 사용해야 합니다. 이 코드를 실행하면 Mac 시스템이 바로 종료됩니다.

반응형
Comments