Когда я хочу запустить exe c с помощью простой команды, такой как ls или date, она запускается нормально и отправляет вывод клиенту. Но когда я использую ls -al, например, он печатает клиенту 4 строки, а другую, скажем, 3 в следующем l oop. Это проблема с буфером, но я не знаю, как ее исправить.
//child proccess
dup2(newsockfd,1);
dup2(newsockfd,2);
close(newsockfd);
fflush(stdout);
execvp(words[0],words);
perror("execvp");
exit(EXIT_FAILURE);
Этот пример кода время от времени l oop, поэтому каждый раз, когда он принимает входные данные от клиента, выполняет синтаксический анализ и дает команду exe c. Я хорошо работает для небольшого выхода. Допустим, для ls или date или pwd. Но когда я делаю ls -al, который состоит из 7 строк, он печатает первые 4, а остальные - в следующем l oop. Я обнаружил, что эту проблему можно исправить, если я использую команду send. Используя флаг MSG_SENDALL, но здесь я делаю перенаправление и затем вызываю exe c. Есть ли ограничение между буфером сервера-клиента (сокет-буфером) ??