C 프로그램에서 "bash -c ..."를 실행할 때 출력을 리디렉션합니다.

C 프로그램에서 "bash -c ..."를 실행할 때 출력을 리디렉션합니다.

쉘 명령을 실행하고 다음을 사용하여 출력을 파일로 리디렉션하려는 C 프로그램이 있다고 가정합니다.표준도서관 시스템기능.

system("bash -c \"echo $HOME\" > a.txt");

이것은 설명을 위한 것일 뿐 실제로는 작동하지 않습니다. 출력 리디렉션을 작동시키는 방법은 무엇입니까? 함수에서 bash를 호출하기 때문에 리디렉션을 수행하려면 프로세스 자체가 필요합니다.

답변1

함수가 system이미 셸을 호출했습니다. 이는 항상 bash가 아닌 모든 sh(Bourne/POSIX) 쉘일 수 있습니다. Bash 관련 구성을 사용해야 하는 경우가 아니면 다른 쉘을 호출할 필요가 없습니다. 간단한 명령을 실행하는 경우 명령줄에 리디렉션을 포함하면 됩니다. 더 복잡한 명령을 실행하는 경우 전체 명령 시퀀스를 중괄호로 묶을 수 있습니다.

system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");

관련 정보