stdin에서 file://을 읽도록 애플리케이션을 속이려면 어떻게 해야 합니까?

stdin에서 file://을 읽도록 애플리케이션을 속이려면 어떻게 해야 합니까?

파일 URI 체계로컬에 저장된 파일의 URI를 지정할 수 있습니다 file:///home/demo/sample.

지정하는 데 사용할 수 있습니까 stdin?

예를 들어 CURL을 사용하면 다음과 같습니다.

curl file:///home/demo/sample

파일의 내용을 표시합니다.

echo "Hello" | curl file:///dev/fd/0

주어진빈 결과, "Hello"를 표시하고 싶습니다. 덧붙여서:

echo "Hello" | cat /dev/fd/0

실제로 출력에 "Hello"가 표시됩니다.

file://target 뒤에 무엇을 넣어야 하나요 stdin?


배경: 노력 중이에요스포츠HTTP URI 또는 ​​로 지정된 파일에서 데이터를 읽을 수 있지만 file://, 여기에서 직접 비디오 스트림을 읽을 수 있는 옵션은 없는 것 같습니다 stdin.관련된 질문거의 2년 전에 제기된 질문에 대한 답변은 단 한 번도 없습니다.) 나는 응용 프로그램이 파일을 읽고 있다고 생각하도록 속일 수 있기를 원합니다. 실제로는 ffmpeg.

답변1

curl file:///dev/fd/0

curl파일 설명자 0( )에서 읽는 올바른 방법입니다 stdin.

읽을 수 있는 텍스트 파일을 얻으려면 다음을 실행하십시오.

<theTextFile.txt curl file:///dev/fd/0

그것은 동일하게 작동해야 합니다 cat.

귀하의 질문은 "파이프에서 컬을 읽는 방법"입니다. 대답은 다음과 같습니다.패치 컬의 소스 코드.


위 예시에서 컬 strace를 분석해 보면 mmap파일임을 알 수 있습니다. mmap파일이 파이프이면 ing이 작동하지 않습니다. 컬이 일반 호출 read과 시스템 호출을 사용하는 경우 write컬과 syscall 사이에 차이가 없습니다. 이는 IMO의 방식입니다.<theTextFile.txt curl file:///dev/fd/0cat theTextFile.txt curl | file:///dev/fd/0

관련 정보