리눅스에서 실행되는 C로 작은 쉘을 작성하고 있습니다. 관련 dups가 많이 있기 때문에 위치 0에있는 내용을 인쇄 할 수있는 방법이 있는지 묻고 싶습니다. 예를 들어 dup2 (file_name, 0)을 호출하면에 이라는 파일 이름을 인쇄하는 방법이 있습니다. 디버깅에 사용할 수 있습니까?C 어떤 파일이 dup2를 사용한 후에 기본 stdin에 출력합니까?
0
A
답변
1
dup2에서 파일 이름을 가져올 수 없습니다.
int dup2(int fildes, int fildes2);
당신이 리눅스에서 할 수있는 것은 :
이당신은/proc 디렉토리에 readlink을 사용할 수 있습니다/자기/FD/NNN NNN은 당신이 here을 읽을 수 있듯이 그것은 단지
int
값을 반환 파일 설명자. 그것이로 가
[here]을 연 또는 당신이 filename
에 fildes
을 assosiate 수있는 창조적 인 뭔가가 struct
을 만들 때, 이렇게하면 파일의 이름을 제공 할 것입니다. 이 같은
뭔가 : 한 다음 더있는 경우
struct Files{
int fildes;
char filename[50];
} files;
단지 배열을 생성하고 모든 시간을 필요로하는 일을; 그런 식으로 항상 filename
으로 매핑 할 수 있습니다.
1
참고. –
@ JonathanLeffler하지만이 답변은 Linux에만 해당됩니다. OP는 리눅스를 요구했다. 내가 아무렇게나 편지를 써야한다고 생각하니? – granmirupa
태그에 없는데도 리눅스가이 질문에 언급되지 않았다. 너 괜찮아. –