Falsche Zuordnung von C struct zu Rust

us pädagogischen Gründen versuche ich, auf das @ zuzugreifeFILE struct in Rust:

unsafe {
    let passwd = libc::fopen("/etc/passwd".to_ptr(), &('r' as libc::c_char));
    let fp = &mut *(passwd as *mut MY_FILE);
    println!("flags={}, file={}", fp._flags, fp._file);
}

dasMY_FILE struct habe ich durch Ausführen von bindgen auf stdio.h erhalten (ich bin auf OS X):

bindgen /usr/include/stdio.h

Irgendwie_flags ist immer8 für Dateien, die im Schreibmodus geöffnet sind (4 im Lesemodus), daher scheint dieses Flag deaktiviert zu sein (ich habe es mit einem @ getesteC Code, um zu überprüfen, ob es sich tatsächlich nicht um 4 oder 8 handelt). Der Dateizeiger scheint jedoch richtig zu sein. Was könnte das verursachen? Extrahiere ich die Bindung aus der falschen Header-Datei? Gibt es etwas, das ich zum @ hinzufügen mus#[repr(C,)] attribute?

Hie ist der vollständige Code einschließlich der Struktur.

Dies ist eine Folgefrage von eine frühere Frage

Antworten auf die Frage(2)

Ihre Antwort auf die Frage