에서 파이프를 통해 동적 배열 구조체를 판독 :작성 및 I는 그 안에 동적 배열 구조체가 C
struct mystruct {
int count;
int *arr;
} mystruct_t;
및 I이 전달하고자하는 C와 링 주위에 파이프를 구조체 프로세스의. 각 프로세스에서 count 값을 변경하면 올바르게 변경됩니다. 내 문제는 동적 배열입니다.
나는 같은 배열을 할당하고있다 :
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));