utime 예제

Perl 5.8.0 이후 목록의 처음 두 요소가 def가 없는 경우 C 라이브러리의 utime(2) syscall이 null second 인수로 호출됩니다. 대부분의 시스템에서, 이것은 현재 시간 (즉, 위의 예에 해당)에 파일의 액세스 및 수정 시간을 설정하고 당신이 쓰기 권한이 있는 경우 소유하지 않은 파일에서도 작동합니다 : 시간이 null 포인터인 경우 액세스 및 수정 시간 파일은 현재 시간으로 설정되어야 합니다. 프로세스의 유효 사용자 ID는 파일 소유자와 일치하거나 프로세스가 파일에 대한 쓰기 권한을 가지고 있거나 utime()을 이러한 방식으로 사용하기에 적절한 권한이 있습니다. 통계를 사용하여 해당 시간과 utime을 설정합니다. 두 함수모두 Perl에 내장되어 있습니다: NFS에서는 로컬 컴퓨터의 시간이 아니라 NFS 서버의 시간을 사용합니다. 시간 동기화 문제가 있는 경우 NFS 서버와 로컬 컴퓨터는 서로 다른 시간을 갖습니다. 유닉스 touch(1) 명령은 실제로 일반적으로 첫 번째 예제에 표시된 대신 이 양식을 사용합니다. utimes() 시스템 호출은 비슷하지만 times 인수는 구조가 아닌 배열을 나타냅니다. 이 배열의 요소는 타임스탬프를 지정하기 위해 1마이크로초의 정밀도를 허용하는 시간 벌 구조입니다. 시간 벌 구조는 : utimbuf 구조는 헤더에 정의되어 있습니다. 구조 utimbuf의 시간은 에보치 이후 초 단위로 측정된다.

utime() 함수는 경로 인수에 의해 명명된 파일의 액세스 및 수정 시간을 설정해야 합니다. utime() 시스템 호출은 파일 이름으로 지정된 inode의 액세스 및 수정 시간을 각각 actime 및 modtime 시간 필드로 변경합니다. futimes(2)를 지원하는 시스템에서는 파일 간에 파일 핸들을 전달할 수 있습니다. futimes(2)를 지원하지 않는 시스템에서 파일 핸들을 전달하는 경우 예외가 발생합니다. 파일 핸들을 인식하려면 globs 또는 glob 참조로 전달해야 합니다. 베어워드는 파일 이름으로 간주됩니다. IEEE Std 1003.1-2001, , utime, utimes – inode Linux의 변경 액세스 및/또는 수정 시간의 기본 정의 볼륨은 EACCES 및 EPERM 오류 반환을 구분하는 데 주의하지 않습니다. 반면에 POSIX.1-2001은 utimes()에 대한 오류 설명에 버그가 있습니다. 소개에서 설명한 대로 세 번은 기존의 유닉스 파일 시스템에서 inode와 연결됩니다. 이 중 모든 사용자는 사용자가 파일의 상위 디렉터리에 대한 쓰기 액세스 권한을 가지고 있다고 가정하여 utime을 사용하여 atime 및 mtime을 설정할 수 있습니다. 사실상 ctime을 변경할 수 있는 방법은 없습니다. 이 예제에서는 utime: 파일 목록의 각 파일의 액세스 및 수정 시간을 변경하는 방법을 보여 주며 있습니다.

목록의 처음 두 요소는 숫자 액세스 및 수정 시간 순서대로 여야 합니다. 성공적으로 변경된 파일 수를 반환합니다. 각 파일의 inode 변경 시간이 현재 시간으로 설정됩니다. 예를 들어 이 코드는 파일이 이미 존재하고 프로그램을 실행하는 사용자에 속할 때 Unix touch(1) 명령과 동일한 효과를 가짐: libc4 및 libc5에서 utimes()는 utime()에 대한 래퍼일 뿐이므로 초초 해상도를 허용하지 않습니다. 시간[0]은 새 액세스 시간을 지정하고[1]은 새 수정 시간을 지정합니다. 시간이 NULL이면 utime()과 유사하게 파일의 액세스 및 수정 시간이 현재 시간으로 설정됩니다. POSIX.1-2001은 utimes() 레거시를 표시하며, utime()보다 더 많은 기능을 제공하기 때문에 이상합니다. utime을 사용하여 파일을 전혀 건드리지 않은 것처럼 보이게 합니다(업데이트되는 ctime 을 넘어서).