2011-11-01 3 views
0

Linux 시스템에서 다른 데이터 파일 (data.txt)의 이름이 (input.txt) 인 입력 파일 (input.cfg)을 읽어야하는 바이너리 (bin.exe)가 있습니다. 지정된. 보통 이진, 입력 파일 및 데이터 파일은 모두 같은 디렉토리에 있습니다. 이제 조직적인 이유로 $ SOMEPATH/bin에 바이너리 파일이 있어야하고 $ SOMEPATH/input에 데이터 파일이 필요합니다.이진 파일이 다른 디렉토리에 있음을 확인하십시오.

나는 이것을 수행하는 방법을 모른다. 내가

$SOMEPATH/bin/bin.exe $SOMEPATH/input/input.cfg 

을하려고하면 나는

error, "data.txt" not found 

하나 개의 솔루션은 input.cfg에서 "data.txt로"의 상대 경로의 절대 포함하는 것입니다 수 있지만, 이진 이것을 허용하지 않습니다.

는 나는 내가 단지

$SOMEPATH/bin/bin.exe input.cfg 

을하고 작동하도록이, $의 somepath는/입력에 생각 있도록 어떻게 든 바이너리를 속여 생각하지만, 나는 이것이 가능 여부를 알 수 없습니다. 어떤 힌트?

답변

3

(cd $SOMEPATH/input && $SOMEPATH/bin/bin.exe input.cfg)

이 프로그램이 파일을 찾기 위해 현재 작업 디렉토리에 의존한다고 가정한다. 예를 들어 /proc/<pid>/exe과 상담하여 프로그램이 실행 파일과 동일한 위치에서 프로그램을 찾기가 어려울 경우 운이 좋지 않을 수 있습니다.

+0

예, 그 트릭을! 고마워요! 마지막 질문; 출력 파일은 $ SOMEPATH/input에서 생성됩니다. 어떻게하면 다른 임의의 디렉토리에서 생성되도록 할 수 있습니까 ??? – flow

+0

@flow : 의존 - 프로그램이 출력 파일을'.' 즉 현재 작업 디렉토리로 여는 것을 주장하면 운이 좋지 않을 수 있습니다. 이 신비한'bin.exe '에는 어떤 문서가 있는가, 어쩌면 입력과 출력 전화 번호부를 지정하기를위한 명령 행 선택권이 있는가? –

+0

아니요, 안타깝게도 바이너리에 대한 문서가 없습니다 (오래된 개발 프로그램이었습니다) – flow

관련 문제