나는 Cygwin을 사용하고 있습니다 -아니요, 아직 닫히지 않았습니다.- <()
문법에 문제가 있어요. 프로그램은 내가 전달한 파일 설명자를 받아들이기를 거부하지만 다른 프로그램에서는 이를 괜찮게 받아들입니다. 내 거가설프로그램이 파일 설명자를 도우미 중 하나에 전달한 다음 프로그램이 파이프를 수신하지 못한다는 것입니다(일반적인 0
, 1
및 2
, 여기서 0
및 2
는 꺼질 수 있음). 이것은 작동 cat
하지만 이 프로그램에서는 작동하지 않습니다.
MCVE:
./jpegtran -copy all -drop +16+16 <(echo "JPEG FILE") -outfile out.jpeg out.jpeg
그러면 오류 메시지가 생성됩니다.
C:\path\to\jpegtran.exe: can't open /dev/fd/63 for reading
이를 수행할 수 있는 방법이 있습니까? 아니면 의지해야 하나요...임시 파일?*전율*
내가 아는 한 Cygwin은 모든 의도와 목적을 위해 POSIX 환경을 에뮬레이트합니다. 명명된 파이프를 사용하여 더미 파일을 생성하는 데 실패하면(Windows API를 사용하여 수행할 수 있다는 것을 알고 있습니다 . Windows 프로그램에 경로를 전달할 //./pipe/pipename
때 현재 사용 중인 이름 다시 쓰기를 사용하여 이를 처리할 수 있어야 합니다 /cygdrive/c/
) 실제 "nix box"에 적용해보고 싶다는 답변이 만족스럽습니다.
답변1
참고: 많은 고민 끝에 OP가 jpegtran
"자르기 및 배치"(한 이미지의 일부를 다른 이미지로 복사)를 지원하는 비표준 버전을 사용하고 있다는 것이 확인되었습니다.
그렇다면 대체 프로세스(PS라고도 함)에서는 왜 이 기능을 사용하지 않습니까? 코드를 보지 않고는 100% 확신을 가지고 절대적으로 말할 수는 없지만 가능성이 매우 높은 설명이 있습니다. PS는 실제로 데이터에 대한 스트리밍 액세스를 허용하는 읽기 전용 파이프인 특수 파일을 생성합니다. 이를 사용할 때는 물론 파일에 쓸 수 없으며 더 중요한 것은당신은 그 안에서 그것을 찾을 수 없습니다(랜덤 액세스). 흐름 모델을 사용하지 않는 도구로 PS를 사용해 보십시오(vim이 한 예입니다). 할 수 있는 일이 제한되어 있거나 전혀 작동하지 않습니다.
이 기능이 jpegtran
소스 이미지(JPEG)의 직사각형 하위 집합을 추출한다는 점을 감안할 때 이를 구현한 사람이 단방향 스트림에 대한 액세스를 제한하기 위해 자체적으로 제한을 가했을 가능성은 거의 없어 보입니다. 이미지의 일부를 꺼내는 것은 분명히 검색 작업이며 필수는 아니지만 매우 유용할 수 있습니다. 따라서 PS는 허용되지 않습니다.