programing

Windows에서 fcntl 대체

nasanasas 2020. 11. 24. 08:05
반응형

Windows에서 fcntl 대체


fcntlLinux에서만 사용할 수있는 것으로 보이는 표준 라이브러리 모듈 을 사용하는 Python 프로젝트 (중요한 경우 Django 프로젝트)를 받았습니다. 내 Windows 컴퓨터에서 실행하려고하면 ImportError이 모듈이 여기에 존재하지 않기 때문에으로 중지 됩니다.

Windows에서 작동하도록 프로그램을 약간 변경하는 방법이 있습니까?


fcntlon windows 의 대체 win32api호출입니다. 사용법은 완전히 다릅니다. 그냥 뒤집을 수있는 스위치가 아닙니다.

즉, fcntl무거운 사용자 모듈을 Windows로 포팅하는 것은 간단하지 않습니다. fcntl호출이 정확히 무엇을하는지 분석 한 다음 동등한 win32api코드가있는 경우이를 찾아야합니다 .

사용하는 일부 코드에 fcntl해당하는 Windows가 없을 가능성도 있습니다.이 경우 모듈 API 및 포팅중인 모듈을 사용하는 프로그램의 구조 / 패러다임을 변경해야합니다.

fcntl통화 에 대한 자세한 내용을 제공하면 사람들이 창에 해당하는 항목을 찾을 수 있습니다.


fcntl 모듈은 고정 파일을 잠그는 데만 사용되므로 다중 액세스를 시도하지 않는다고 가정하면 허용 가능한 해결 방법이 될 수 있습니다. 이 모듈을에 배치 sys.path하면 공식 fcntl 모듈로 작동합니다.

Windows에서만 개발 / 테스트 목적 으로이 모듈사용해보십시오 .

def fcntl(fd, op, arg=0):
    return 0

def ioctl(fd, op, arg=0, mutable_flag=True):
    if mutable_flag:
        return 0
    else:
        return ""

def flock(fd, op):
    return

def lockf(fd, operation, length=0, start=0, whence=0):
    return

이것이 바로 도움이되지는 않지만 Unix (fcntl) 및 Windows (win32 api 호출) 모두에서 작동 할 수있는 대안이 있습니다. portalocker

파이썬을위한 플록 스타일 파일 잠금을위한 크로스 플랫폼 (posix / nt) API라고 설명합니다. 기본적으로 fcntl을 win32 api 호출에 매핑합니다.

이제 http://code.activestate.com/recipes/65203/ 의 원본 코드를 별도의 패키지로 설치할 수 있습니다 -https : //pypi.python.org/pypi/portalocker

참고 URL : https://stackoverflow.com/questions/1422368/fcntl-substitute-on-windows

반응형