문제

프로젝트가 있습니다. 내 프로젝트는 대화식 쉘을 만드는 것으로 구성됩니다. 이 쉘은 CD, LS, Echo 등과 같은 몇 가지 기본 명령을 구현합니다. EXEC 사용을 연구하고 있지만 유용한 사이트를 찾지 못했습니다. 제안 된 링크가 도움이 될 것입니다.

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

화면 에이 작업의 출력을 어떻게 표시합니까?

도움이 되었습니까?

해결책

당신이 쓴 코드는 다른 일을하지 않는 간단한 테스트 프로그램에서 나에게 작동합니다. EXECL을 호출 할 때 프로세스는 모든 기존 파일 핸들을 유지합니다. 따라서 execl을 호출 할 때 stdout이 무엇이든 새로운 바이너리가로드 될 때 동일합니다. 출력이 터미널로 이동하려면 STDOUT가 터미널로 이동하십시오.

다른 프로그램과 함께 I/O를하고 싶다면 Popen은 (MGB에 언급 된 바와 같이) 이것에 좋습니다. 새로운 프로세스를 포크하고, 배관을 설정하고, EXEC의 일부 변형을 호출하고, 통신에 사용할 수있는 파일 핸들을 반환합니다.

다른 팁

행위

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

화면에 출력을 가져옵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top