讀取與動態數組結構我有一個動態數組的結構體在它的內部:寫入和通過管道用C
struct mystruct {
int count;
int *arr;
} mystruct_t;
和我想通過在C和周圍的環結構向下的管的過程。當我在每個過程中更改計數值時,它會正確更改。我的問題是動態數組。
我分配數組作爲這樣的:
mystruct_t x;
x.arr = malloc(howManyItemsDoINeedToStore * sizeof(int));
每個過程應該從管道中讀取,做一些該數組,然後將其寫入到另一個管道。戒指設置正確;那裏沒有問題。我的問題是除第一個以外的所有進程都沒有獲得數組的正確副本。我在第一個過程中將所有值初始化爲10,例如,然而,它們在隨後的顯示爲0。
for(j = 0; j < howManyItemsDoINeedToStore; j++){
x.arr[j] = 10;
}
登錄:
Initally: 10 10 10 10 10
After Proc 1: 9 10 10 10 15
After Proc 2: 0 0 0 0 0
After Proc 3: 0 0 0 0 0
After Proc 4: 0 0 0 0 0
After Proc 5: 0 0 0 0 0
After Proc 1: 9 10 10 10 15
After Proc 2: 0 0 0 0 0
After Proc 3: 0 0 0 0 0
After Proc 4: 0 0 0 0 0
After Proc 5: 0 0 0 0 0
現在,如果我改變我的代碼,比方說,
struct mystruct {
int count;
int arr[10];
} mystruct_t;
一切都正確傳下來的管道,沒有問題。我使用C中read
和write
:
write(STDOUT_FILENO, &x, sizeof(mystruct_t));
read(STDIN_FILENO, &x, sizeof(mystruct_t));