find 명령의 경로를 테스트로 사용하여 execl (...)을 호출하는 간단한 테스트 프로그램을 작성했습니다. find 프로그램에 전송 된 매개 변수와 상관없이 stdout에는 출력이 없습니다. 왜 이런 일이 일어나는 걸까요? 프로그램은 다음과 같습니다.find-utils의 find 프로그램에서 execl (...)이 결과를 출력하지 않는 이유는 무엇입니까?
#include <unistd.h>
#include <sys/types.h>
#include <cstdio>
#include <cerrno>
int main(int argc, char** argv)
{
if(execl("/usr/bin/find", "/usr/bin/find", "/", "-maxdepth", "1", "-name", "bin", (char*)NULL) == -1)
{
perror("In QueryRequest::Client_Execute(): ");
_exit(1);
}
return 0;
}
위의 프로그램의 컴파일 및 실행 테스트는 다음과 같습니다. 그것으로부터 출력이 없다는 것에주의하십시오. 위의 매개 변수를 사용하여 콘솔에서 find를 실행하면 비어 있지 않은 출력이 생성됩니다. 여기서 문제는 무엇이며 어떻게 지나갈 수 있습니까?
[[email protected] src]$ g++ test.cpp -o test
[[email protected] src]$ ./test
[[email protected] src]$
대상 시스템에 대한 특정 메타 정보 :
Linux 4.9.66-1-MANJARO #1 SMP PREEMPT Thu Nov 30 14:08:24 UTC 2017
결과를 변경하지 않는 것을 발견 할 수 -print 인수를 사용. 이 동작은 4.11 커널을 사용하는 4.9.66-1-MANJARO 및 다른 ARCH 기반 독점 배포판을 포함하여 다른 시스템에서 예상대로 작동합니다. g ++ 7.2 및 다른 4.x 버전으로 컴파일했습니다.
나를 위해 작동합니다. –
나를 위해 일한다. – Anon
Q를 편집하여'uname -srv'의 결과를 보여줍니다. 행운을 빕니다. – shellter