Komunikcja między procesami - Pipe

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?

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

@AdamK111:

title

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1