lockf(fd[1], 1, 0); Объясните параметры этого предложения

lockf()Первым аргументом функции является файловый дескриптор, который указывает файл или файловый дескриптор для блокировки. В этой программе fd[1]это конец конвейера для записи, поэтому здесь fd[1]параметр используется для указания конца конвейера для записи, который необходимо заблокировать. Второй параметр — операция блокировки, которую необходимо выполнить. 1Указывает, что канал должен быть эксклюзивно заблокирован, то есть запись разрешена только текущему процессу, а другие процессы не могут читать и записывать канал. Если параметр равен 0, это означает, что канал должен быть разделен замком, то есть несколько процессов могут читать канал одновременно, но только один процесс может писать. Третий параметр — количество байтов для блокировки. В этой программе этот параметр 0означает блокировку всего конвейера, то есть блокируются все байты от начальной до конечной позиции конвейера. Если этот параметр является положительным числом, это означает, что указанное количество байтов от начала канала заблокировано. Если этот параметр отрицательный, он блокирует указанное количество байтов от конца канала. Короче говоря, эта программа lockf(fd[1], 1, 0)указывает, что требуется эксклюзивная блокировка на стороне записи конвейера, и весь конвейер заблокирован. То есть, когда текущий процесс записывает данные, другие процессы не могут читать и писать в канал.

おすすめ

転載: blog.csdn.net/ihateright/article/details/130926488#comments_26749732