나는 count = read(pipe, buffer, buffsize);
을 가지고 있으며 다른 프로세스를 실행하기 위해 다른 실행 파일을 통해받은 (버퍼) 것을 실행하려고합니다.문자열을 표준 입력으로 실행 파일에 전달하십시오.
printf("%s", buffer);
은 정확하게 인쇄하지만 execl("/path", "/path", buffer, NULL);
또는 다른 방법으로 실행하면 실행 파일이 실행되지 않는 것 같습니다. path
은 컴파일 된 실행 파일입니다.
실행 파일 은 execv("./path", STDIN_FILENO);
을 사용하면이 제대로 실행되지만 파이프에서는 가져 오지 않습니다. path
은 문자열을 표준 입력으로 기다리고 있습니다.
프로그램의 상황은 while 루프와 read()
을 사용하여 하나의 프로그램에 입력을 입력하고 파이프를 사용하여 해당 텍스트를 execl
을 실행하는 프로그램에 보내는 것입니다 (이 외에는 아무것도 수행 할 필요가 없습니다.) 프로그램)을 호출하면 실행 파일을 stdin
과 같은 문자열로 호출하려고 시도합니다. 사용자가 enter 키를 누르면 의도 된 입력 만 파이프를 통해 들어옵니다.
파이프를 통해 들어오는 문자열의 예는 this is an example
입니다. 실행 파일은 이것을 표준 입력으로 입력해야합니다.
문자열을 /path
실행 파일의 표준 입력으로 올바르게 사용하려면 어떻게해야합니까?
여기 엃 여러 가지 문제가있다; 우리는 더 많은 정보가 필요합니다. 두 번째 실행 파일이 stdin에서 입력을 기대하거나 명령 줄 인수로 사용합니까? * 전혀 실행되지 않습니까? 아니면 예상대로 입력을 처리하지 못합니까? 자식 프로세스 또는 원래 프로세스에서'execl'을하고 있습니까? 파이프에 들어오는 것이 있습니까? 아니면 두 번째 실행 파일의 의도 된 입력입니까? 이 모든 작업을 수행하는 프로그램에 필요한 다른 작업이 있습니까? – zwol
@ Zack 감사합니다. 포함해야 할 것이 무엇인지 확신 할 수 없었습니다. 더 많은 정보를 추가했습니다. –
파이프를 통해 나오는 문자열이 "this is an example"일 때,'count'의 값은 무엇입니까? – chux