curl file:///dev/fd/0
Вот правильный способ заставить curl
читать из дескриптора файла 0 (stdin
).
Возьмите любой читаемый текстовый файл, сделайте
<theTextFile.txt curl file:///dev/fd/0
И он должен работать так же, как cat
.
Ваша проблема - "Как заставить curl читать из трубы?", и я боюсь, что ответ таков: патч исходного кода curl.
Если вы проанализируете strace curl в примере выше, вы увидите, что он mmap
s файл. mmap
ing не будет работать, если файл - это труба. Если бы curl использовал обычные системные вызовы read
и write
, не было бы никакой разницы между cat theTextFile.txt curl | file:///dev/fd/0
, что и должно быть, IMO.
Я ожидал, что использование /dev/mmcblk1p3
сразу двумя разными способами, с одной стороны, смонтированное с использованием буферов ядра, с другой стороны, через g_mass_storage
с использованием его буферов вызовет проблемы, как только буферы вылезут наружу синхронизации. «Не удаляет файлы», вероятно, только вершина айсберга; в общем, тот, кто записывает блок последним, побеждает, что приводит к несогласованному состоянию, и увидите ли вы изменения, сделанные в одной системе, как изменения в других системах, будет зависеть от текущего состояния буферизации.
Итак, :Не делай этого. Либо смонтировать, либо использовать как g_mass_storage
, но не то и другое одновременно. Если вы хотите обмениваться файлами между двумя компьютерами, используйте что-то другое (, например. сетевая файловая система ).