Komunikcja między procesami - Pipe

Komunikcja między procesami - Pipe
AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

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?

MexikanoS
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
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.

PerlMonk
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa 🐪
  • Postów: 1719
0

Wrzuć kod, który napisałeś. Nie możemy za wiele powiedzieć nie widząc kodu.

MexikanoS
  • Rejestracja: dni
  • Ostatnio: dni
1

@AdamK111:

title

Kopiuj
#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";
}

title

  1. Najwyraźniej tak.
  2. Tak jak wyżej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.