Estoy tratando de determinar si es posible distinguir entre dos identificadores separados en el mismo archivo y un identificador único con dos descriptores de archivo que lo señalan, usando metadatos de procfs.
# setup exec 3>test.lck exec 4>test.lck # usage flock -x 3 # this grabs an exclusive lock flock -s 4 # this blocks echo "This code is never reached" # setup exec 3>test.lck exec 4>&3 # usage flock -x 3 # this grabs an exclusive lock flock -s 4 # this converts that lock to a shared lock echo "This code gets run" Si estoy inspeccionando el estado de un sistema desde el espacio del usuario después de que finalizó la etapa de "configuración" y antes del "uso", y quiero distinguir entre esos dos casos, ¿están disponibles los metadatos necesarios? Si no, ¿cuál es la mejor manera de exponerlo? (¿Agregar punteros kernelspace a /proc/*/fdinfo es una acción razonable, que es probable que acepte como parche?)
No tengo conocimiento de nada que exponga esto en el proceso tal como está. Descubrir esto puede ser útil al depurar alguna porquería, pero luego puede inspeccionar el estado con el depurador del kernel o un script systemtap.
Según su pregunta, parece que desea lograr esto de una manera que pueda programarse fácilmente y aquí tengo que preguntar cuál es el problema real.
No tengo idea si la gente de Linux estaría interesada en exponer esto. Un problema es que exponer un puntero a un archivo agrega otra fuga de información y, por lo tanto, es probable que se bloquee en el futuro. Otros medios requerirían numerar todos los objetos de archivo y eso no sucederá. De todos modos, se le pedirá una justificación de una manera similar a la que le pedí anteriormente.