Вы пытались закрыть сокет в вашем клиенте перед запуском 'myApplication'?
while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
{
recvBuff[n] = 0;
if(fputs(recvBuff, stdout) == EOF)
{
printf("\n Error : Fputs error\n");
}
}
/* close the socket here*/
close(sockfd);
system(/bin/myApplication);
Ваша догадка верна. dd
не имеет понятия об использовании файловой системы, он просто копирует данные (или нет, если установлено conv=sparse
и весь блок равен нулю ).
Также возможно иметь 100% заполненную файловую систему и все же крошечный разреженный образ dd. Предполагая, что ваши файлы полны нулей.
Существует разница между свободным пространством и намеренно обнуленным, но используемым пространством, но dd
не имеет для этого понятия. Поэтому conv=sparse
следует использовать с осторожностью, особенно при восстановлении.
При восстановлении разреженного изображения с помощью conv=sparse
,целевое устройство должно быть полностью обнулено, иначе старые ненулевые данные -останутся там, где должны быть нули. Результат - поврежденная файловая система.