"perltrap"의 C 프로그래머를위한 섹션과 내가 검색 한 모든 것에 따르면, Perl에서 프로그램 이름을 얻으려면 "$ 0"을 사용해야합니다. 그러나 다음 "호출자"스크립트를 실행할 때 :
#!/usr/bin/perl
exec{"./called"}("name", "arg");
자체적으로 다음 "호출"스크립트를 호출합니다.
#!/usr/bin/perl
print("$0 $ARGV[0]\n");
./called arg
대신 " "가 표시됩니다!
"caller"대신 다음 "called.c"프로그램을 호출하면 :
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%s %s\n", argv[0], argv[1]);
return 0;
}
name arg
예상대로 " "가 표시됩니다.
경로가 아닌 스크립트 이름을 얻는 방법이 있습니까?
Bash, Python 및 사용자 지정 스크립트 인터프리터로 몇 번 더 테스트 한 후 Shebang 메커니즘이 "argv [0]"를 인터프리터로 전파하지 않고 shebang 뒤의 경로를 "argv [0]"로 사용한다는 것을 알게되었습니다. 통역사를 위해. 이것은 스크립트에서 에뮬레이션 할 수없는 C 프로그램의 기능이라고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다