簡體   English   中英

同時讀取和寫入Python和C文件

[英]Python and C file read/write simultaneously

我有一些C代碼,已在Python中進行了擴展。 擴展的C代碼具有將某些結構附加到二進制文件的功能:

void writefunction(const struct struct1* some,const u_char* struct2){
    f=fopen('save.bin',"ab");
    if(f==NULL){
        printf("Unable to open file");
        exit(-1);
    }
    fwrite(some,sizeof(struct struct1),1,f);
    fwrite(struct2,sizeof(u_char),4,f);
    fclose(f);
}

現在,我已經在Python中導入了代碼。 我想在Python中啟動兩個線程:一個將運行此writefunction(),另一個將讀取相同的文件。 writefunction在一個線程中正常工作,但是從文件讀取的Python函數不起作用。

我究竟做錯了什么?

不要這樣

這里的問題是,“ save.bin”文件的內容取決於您使用的C編譯器-也許還取決於傳遞給編譯器的某些命令行參數。

結構struct1如何內部保存在內存中取決於編譯器-至少在使用位域時; 編譯器可能還會添加填充(請參見下面的示例)。 您將內部存儲器結構寫入文件。

如果要與用不同語言編寫的程序(並可能在不同服務器上運行)交換數據,則應使用一些“有線”(序列化)協議對其進行轉換。

建議:也許要使用JSON或XML。

填充結構的示例:

#include <stdio.h>

struct struct1 {
   char a;
   long b;
};

int main() {
   printf("%d %d %d\n", sizeof(char), sizeof(long), sizeof(struct struct1));
   return 0;
}

一種可能的輸出是:

1 8 16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM