W trakcie nauki kominukcji przez łącza nienazwane, napotkałem następujący problem. Nie mogłem przesłać liczby całkowitej pomiędzy procesem macierzystym, a potomnym. Po zmianie zmienej na tablicę charów wszytsko działa poprawnie. Czy zasadą jest, że przesyła się tylko ciągi znaków, a nie same liczby czy po prostu może coś źle zrobiłem?
0
1
http://jedrzej.ulasiewicz.staff.iiar.pwr.wroc.pl/KomputeroweSystSter/wyklad/Lacza6.pdf
Funkcja wyczytuje ciąg danych - zatem tablica charów w tym przypadku służy jako bufor. Nie widzę w sumie problemu w wyczytaniu danej liczby, z tym że musiałbyś ją wtedy przekonwertować ze znaków do aktualnej liczby.
int _reader = 0;
DWORD _readerOffset = reinterpret_cast<DWORD>(_reader);
read(fd, (void *)_readerOffset, 4);
Oczywiście w takim przypadku wyczytujesz 4 znaki z pliku i nie są one odpowiednikiem liczby.
Pokaż swój kod, wtedy można powiedzieć coś więcej.
0
Wrzuć kod, który napisałeś. Nie możemy za wiele powiedzieć nie widząc kodu.
1
#include <iostream>
void main()
{
__int16 buffer = 0;
FILE *pFile;
pFile = fopen("m.bin", "rb");
fread((char *)reinterpret_cast<unsigned long>(&buffer), sizeof(char), 2, pFile);
fclose(pFile);
std::cout << "Wartosc: " << buffer << "\n";
}
- Najwyraźniej tak.
- Tak jak wyżej.