2008-09-28 5 views
4

나는 exec 패밀리의 사용을 요구하는 프로젝트를 가지고있다. 내 프로젝트는 대화식 셸로 구성됩니다. 셸은 cd, ls, echo 등의 몇 가지 기본 명령을 구현합니다. exec의 사용을 연구했지만 유용한 사이트를 찾지 못했습니다. 추천 링크가 도움이 될 것입니다.임원 패밀리

int ret; 
ret = execl ("/bin/ls", "ls", "-1", (char *)0); 

화면에이 작업의 결과물을 어떻게 표시합니까?

int fd = 1; 
dup(fd); 
close(fd); 

을하고

답변

2

작성한 코드는 다른 테스트를 수행하지 않는 간단한 테스트 프로그램에서 작동합니다. execl을 호출 할 때 프로세스는 모든 이전 파일 핸들을 보유한다는 것을 기억하십시오. execl을 호출 할 때 stdout이 무엇이든 관계없이 새 바이너리가로드 될 때와 동일합니다. 출력을 터미널로 보내려면 stdout이 터미널에 있는지 확인하십시오.

다른 프로그램에서 I/O를 수행하려는 경우 popen이 좋습니다 (언급 된대로). 새 프로세스를 포크하고, 배관을 설정하고, exec의 변형을 호출하고, 통신에 사용할 수있는 파일 핸들을 반환합니다.

4

화면에 출력을 얻을 수 있습니다.

관련 문제