프로그램에 대한 입력 파일에 대해 프로세스 대체를 사용하려고하는데 작동하지 않습니다. 일부 프로그램이 입력 파일에 대한 프로세스 대체를 허용하지 않기 때문입니까?일부 프로그램은 입력 파일의 프로세스 대체를 허용하지 않습니까?
하면 작동하지 않습니다 다음
bash -c "cat meaningless_name"
>sequence1
gattacagattacagattacagattacagattacagattacagattacagattaca
>sequence2
gattacagattacagattacagattacagattacagattacagattacagattaca
bash -c "clustalw -align -infile=<(cat meaningless_name) -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Less verbose output, finishing with:
No sequences in file. No alignment!
를하지만 다음과 같은 컨트롤이 작업을 수행 자체가 작동이 과정 대체를 제안하지만, CLUSTALW 프로그램 자체가 마음에 들지 않는
bash -c "clustalw -align -infile=meaningless_name -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Verbose output, finishing with:
CLUSTAL-Alignment file created [output_alignment.aln]
bash -c "cat <(cat meaningless_name) > meaningless_name2"
diff meaningless_name meaningless_name2
(No output: the two files are the same)
bash -c "clustalw -align -infile=meaningless_name2 -outfile=output_alignment.aln -newtree=output_tree.dnd"
(Verbose output, finishing with:
CLUSTAL-Alignment file created [output_alignment.aln]
프로세스 대체 - 아마도 비표준 파일을 생성하거나 비정상적인 파일 이름으로 파일을 생성하기 때문일 수 있습니다.
프로그램에서 프로세스 대체를 허용하지 않는 것이 일반적입니까? 이것이 문제인지 어떻게 확인할 수 있습니까?
저는 Ubuntu 9.10에서 GNU bash 버전 4.0.33 (1) -release (x86_64-pc-linux-gnu)를 실행하고 있습니다. Clustalw는 2.0.10 버전입니다.
임시 파일이 하드 드라이브의 파일입니까, 아니면 RAM에만 있습니까? 나는 하드 드라이브를 치는 것을 피하기를 바랬다. –
저에게 그것은'/ tmp/zshXXX'입니다. 따라서 [tmpfs] (http://en.wikipedia.org/wiki/Tmpfs)를 꽤 쉽게 사용할 수 있습니다. –
[* zsh * 프로세스 대체 문서] (http://zsh.sourceforge.net/Doc/Release/Expansion.html#SEC67)에서는 프로세스의'<() '형식을 사용할 때 발생할 수있는 문제 중 일부에 대해 자세히 설명합니다 리디렉션 : lseek (2)가 작동 할 것으로 예상하고, 인수를 처리하기 전에 fds를 닫을 수 있습니다 (가능한 보안 기능). 명령이 대체 된 fd를 읽지 않으면 하위 프로세스가 중단됩니다. 첫 번째 질문은이 질문의 경우에 가장 가능성이 높습니다. –