popen() 매뉴얼 페이지에 따르면 나는/bin/sh ...을 여는 중입니다./bin/bash 쉘을 열고 BASH 쉘 스크립트와 상호 작용하도록이 동작을 오버로드 할 수있는 방법이 있습니까? 아니면 pty 스타일 연결을 열어야합니까?popen() 스트림에서 bash를 열 수 있습니까?
답변
가 아마 가장 간단한 차례로과 같이 당신의 bash는 스크립트를 호출하는 작은 쉬 스크립트하는 것입니다 :
#!/bin/sh
exec bash yourscript.sh "[email protected]"
을 아니면는 popen 포기와 포크 자신의는 popen을 구현할 수 있습니다()와 execl 함수().
별도의 sh 스크립트는 쓸모가 없습니다. bash 스크립트에서'popen'을 직접 호출 할 수도 있습니다. – Gilles
쓸데없는 생각, 나는 약간 생각한다. 혼란 스럽네요.하지만 효과가 있습니다. 귀하의 답변, +1. 그리고 편집 해 주셔서 감사합니다. –
popen
에 전달하는 스 니펫에서 bash 구문을 사용하려면 sh에서 bash를 명시 적으로 호출 할 수 있습니다. 당신이 bash는 조각 안쪽에 작은 따옴표가 필요하면
f = popen("exec bash -c 'shopt -s dotglob; cat -- *'", "r");
, '\''
로 전달합니다. 다른 모든 문자는 문자 그대로 전달됩니다.
실행하려는 기존 bash 스크립트가있는 경우 스크립트 나 다른 프로그램과 동일하게 경로를 지정하기 만하면됩니다. 스크립트가 실행 가능하고 #!/usr/bin/env bash
또는 #!/bin/bash
으로 시작하는지 확인하십시오. 당신이 비 실행 될 수있는 스크립트가있는 경우 (때문에 Windows 이동성 제약의 예를 들어), 명시 적으로 떠들썩한 파티를 호출 할 수 있습니다 :
f = popen("exec bash myscript.bash", "r");
또는 원하는 프로그램을 호출 사용자 정의 popen
-like 함수를 작성 (하지만 더 간단한 솔루션만으로는 만족스럽지 않을 때만 가능합니다. 예 : popen() alternative.
그게 내가 알아야 할 것입니다. 감사!!! 또한 예제 링크의 링크를 통해 GLIB에있는 프로세스를 작성하기위한 자켓으로 안내합니다. 이게 내가 필요한 것 같아. –
- 1. 스트림에서 TrueZIP 아카이브를 열 수 있습니까?
- 2. 터미널을 열 때마다 bash를 다시로드해야합니까?
- 3. 어떻게하면 git bash를 다시 시작할 수 있습니까?
- 4. bash를 사용하여 RAM에 파일을 저장할 수 있습니까?
- 5. XMLStreamWriter의 출력 스트림에서 "jump"할 수 있습니까?
- 6. Python persistent Popen
- 7. popen/pclose의 대안은 무엇입니까?
- 8. 콘솔이없는 C++ popen 명령
- 9. objective c popen
- 10. 안전한 버전의 popen()?
- 11. bash를 확인하십시오
- 12. popen with environment
- 13. 파이썬 Popen 어려움 : 파일을 찾을 수 없습니다
- 14. 어떻게 bash를 사용하여 파일에 변수를 저장할 수 있습니까?
- 15. 현재 입력 줄에서 문자열을 검색하도록 Bash를 구성 할 수 있습니까?
- 16. build.sh를 사용하여 NetBSD의 크로스 컴파일에 Bash를 어떻게 포함시킬 수 있습니까?
- 17. xinit와 인수로 전달하는 bash를 결합 할 수 있습니까?
- 18. bash를 사용하여 ASCII 이미지의 균형을 어떻게 확인할 수 있습니까?
- 19. 어떻게 bash를 사용하여 입력을 분할 할 수 있습니까?
- 20. "deploy cap : setup"은 BASH를 파괴 할 수 있습니까?
- 21. 온라인 .txt 파일에서 bash를 통해 텍스트를 가져올 수 있습니까?
- 22. 오라클 BEQ와는 popen()
- 23. 닫힌 스트림에서 읽기
- 24. 하위 프로세스는 popen 기능
- 25. Perl이나 Python에 비해 Bash를 사용하면 장점이 있습니까?
- 26. 는 popen 원격 명령
- 27. 파이썬는 popen 그렙은
- 28. django popen "invalid syntax"
- 29. popen telnet에서 하위 명령
- 30. 파일에 popen() 출력을 작성하십시오.
대부분의 리눅스 시스템에서'/ bin/sh'는'/ bin/bash'와 심볼릭 링크되어 있습니다. –
? 어쩌면 우분투는 아니지만. –
@JoachimPileborg 예.하지만 'sh'로 호출하면 다른 행동을합니다. – hamstergene