#include <unistd.h>
int main()
{
int fd[2][2];
pipe(fd[0]);
pipe(fd[1]);
pid_t pid_fork = fork();
if (!pid_fork) {
// Дочерний процесс
close(fd[0][1]);
close(fd[1][0]);
dup2(fd[0][0], STDIN_FILENO);
dup2(fd[1][1], STDOUT_FILENO);
execl("/bin/tr", "/bin/tr", "l", "r", NULL);
} else {
// Родительский процесс
close(fd[0][0]);
close(fd[1][1]);
char buf[1000];
ssize_t sz;
write(fd[0][1], "hello, world\n", sizeof("hello, world\n") - 1);
close(fd[0][1]);
sz = read(fd[1][0], buf, sizeof(buf));
if (sz > 0) {
write(STDOUT_FILENO, buf, sz);
}
}
}
к сожалению в выходном файле никаких закономерностей не обнаруживается
достаточно мне заменить точку на стрелочку и, разумеется, объект на указатель на объект и (о чудо!) всё работает
Чисто академический вопрос: почему так?
Как выяснилось (после 2 часов отладки вперемежку с нецензурной руганью) статические переменные a, b оказались одними и теми же (хранятся по одному адресу) для всех объектов классов B, C, D.
Разве они не должны быть в каждом объекте класса разными?
определить первый и последний сегмент
получаются куски,которые мне не нужны, а нужен конечный пакет в виде TCP данных
Почему так происходит, ведь размеры массива test разные?
Можно ли перегрузить функцию sizeof()?
for (i = 0; i < SIZE; ++i){ if (!anim[i].animal) break; if (i == SIZE){ cout << "Its full"; return; } } anim[i].input();
Что в качестве аргументов принимает функция RecordingCallback?