Hướng dẫn fcntl python - trăn fcntl
Mô -đun này thực hiện điều khiển tệp và điều khiển I/O trên các mô tả tệp. Đây là một giao diện cho các thói quen Tính khả dụng: Không phải emscripten, không phải wasi.: not Emscripten, not WASI. Mô -đun này không hoạt động hoặc không có sẵn trên các nền tảng Webassugging Tất cả các chức năng trong mô -đun này lấy một mô tả tệp FD làm đối số đầu tiên của chúng. Đây có thể là một bộ mô tả tệp số nguyên, chẳng hạn như được trả về bởi Đã thay đổi trong phiên bản 3.3: Các hoạt động trong mô -đun này được sử dụng để tăng import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)0 where they now raise an import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)1. Đã thay đổi trong phiên bản 3.8: Mô -đun FCNTL hiện chứa các hằng số import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)2, import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)3, and import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)4 constants for sealing of import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)5 file descriptors. Đã thay đổi trong phiên bản 3.9: Trên macOS, mô -đun FCNTL hiển thị hằng số import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)6 constant, which obtains the path of a file from a file descriptor. On Linux(>=3.15), the fcntl module exposes the import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)7, import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)8 and import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)9 constants, which are used when working with open file description locks. Đã thay đổi trong phiên bản 3.10: Trên Linux> = 2.6.11, mô -đun FCNTL hiển thị các hằng số Đã thay đổi trong phiên bản 3.11: Trên FreeBSD, mô -đun FCNTL hiển thị các hằng số Mô -đun xác định các chức năng sau: Thực hiện thao tác CMD trên FILE DESCRIPTOR FD (các đối tượng tệp cung cấp phương thức Nếu import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)1 sẽ được nâng lên. Tăng một sự kiện kiểm toán Hàm này giống hệt với hàm Tham số yêu cầu được giới hạn ở các giá trị có thể phù hợp với 32 bit. Các hằng số quan tâm bổ sung để sử dụng làm đối số yêu cầu có thể được tìm thấy trong mô -đun Tham số arg có thể là một trong số số nguyên, một đối tượng hỗ trợ giao diện bộ đệm chỉ đọc (như Trong tất cả trừ trường hợp cuối cùng, hành vi là như đối với hàm Nếu một bộ đệm có thể thay đổi được truyền, thì hành vi được xác định bởi giá trị của tham số Mutate_flag. Nếu nó là sai, khả năng đột biến của bộ đệm bị bỏ qua và hành vi cũng như bộ đệm chỉ đọc, ngoại trừ giới hạn byte 1024 được đề cập ở trên là tránh được-miễn là bộ đệm bạn vượt qua ít nhất là những gì hệ điều hành muốn Để đặt ở đó, mọi thứ nên hoạt động. Nếu mutate_flag là đúng (mặc định), thì bộ đệm là (có hiệu lực) được chuyển cho cuộc gọi hệ thống Nếu import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)1 sẽ được nâng lên. Một ví dụ: >>> import array, fcntl, struct, termios, os >>> os.getpgrp() 13341 >>> struct.unpack('h', fcntl.ioctl(0, termios.TIOCGPGRP, " "))[0] 13341 >>> buf = array.array('h', [0]) >>> fcntl.ioctl(0, termios.TIOCGPGRP, buf, 1) 0 >>> buf array('h', [13341]) Tăng một sự kiện kiểm toán Thực hiện thao tác khóa trên tệp mô tả tệp FD (các đối tượng tệp cung cấp phương thức Nếu import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)1 sẽ được nâng lên. Tăng một sự kiện kiểm toán Đây thực chất là một trình bao bọc xung quanh các cuộc gọi khóa
Khi CMD là import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)1 sẽ được nâng lên và ngoại lệ sẽ có thuộc tính ERRNO được đặt thành sys.stdin.fileno() 9 hoặc io.IOBase 0 (tùy thuộc vào hệ điều hành; để kiểm tra tính di động, hãy kiểm tra cả hai giá trị). Trên ít nhất một số hệ thống, sys.stdin.fileno() 3 chỉ có thể được sử dụng nếu bộ mô tả tệp đề cập đến một tệp được mở để viết.Len là số byte để khóa, bắt đầu là phần bù byte mà khóa bắt đầu, so với từ đâu và từ đâu như với
Mặc định cho bắt đầu là 0, có nghĩa là bắt đầu khi bắt đầu tệp. Mặc định cho LEN là 0 có nghĩa là khóa đến cuối tệp. Mặc định cho nơi cũng là 0. Tăng một sự kiện kiểm toán Ví dụ (tất cả trên hệ thống tuân thủ SVR4): import struct, fcntl, os f = open(...) rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY) lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata) Lưu ý rằng trong ví dụ đầu tiên, biến giá trị trả về RV sẽ giữ giá trị số nguyên; Trong ví dụ thứ hai, nó sẽ giữ một đối tượng |