Пример: есть скрипт пускаемый из inetd:
#!/usr/bin/perl my $data=<>; print $data; system("newaliases"); print "Reply\n";
к нему клиент: char *mess = "Test string\n"; . . . if (connect(s, (char *)&server, sizeof (server)) < 0) {...} if (send(s, mess, strlen(mess), 0) < 0 {...} buf = (char *)malloc(sizeof(char) * 512); if ((in = recv(s, buf, 511, 0)) < 0) {...} buf[in] = '\0'; printf("%s\n", buf); free(buf);
По идее должно вернуться следующее: /etc/mail/aliases: 24 aliases, longest 10 bytes, 246 bytes total Test string Reply а выводится только то, что вывел system("newaliases") newaliases это только пример, можно и так system("cat /etc/passwd") результат тот же. Если прочитать из сокета второй раз недостающее вернется, но почему мне надо читать втрой раз???