У меня есть проблема с отправкой целого числа или массива целого числа через трубу н Linux, сначала я пытался отправить целое число, посмотрите на этом коде:Передача целого через трубу
#include <unistd.h>
#include<iostream>
#include<cstdlib>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int main()
{
int count = 10 ;
//cout <<"Enter a digit : ";
//cin >> count ;
cout<<"\n";
int pfd1[1];
pipe(pfd1);
int a=fork();
if(a==0)
{
close(pfd1[0]);
write(pfd1[1],&count,sizeof(count));
close(pfd1[1]);
exit(0);
}
else
{
wait(NULL);
int n =0;
close(pfd1[1]);
read(pfd1[0],&n ,sizeof(n));
close(pfd1[0]);
cout <<"N from parent = "<<n<<"\n\n";
}
return 0;
}
Выход:
N from parent = 4
выход должен быть 10
же, как один объявлен, но это дает мне 4
, и даже если я не-комментарий комментарий код, чтобы пользователь введите номер, выход всегда 4
, в то время как это должно быть число который пользователь ввел.
Что здесь не так? И что, если я хочу отправить массив целых чисел?
Почему вы пренебрегая 'читать()' и 'записи()' возвращает значение? –
, потому что я не знаю, что с ними делать, я все еще изучаю Linux. –
do 'man read',' man write' в ** терминал **, он отобразит, что означает возвращаемое значение – sam