加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何获取正在运行的Perl脚本的路径和名称(C中的argv [0])

发布时间:2020-12-16 06:08:58 所属栏目:大数据 来源:网络整理
导读:在C/C++中(bash,也是?)第一个命令行参数argv [0]是二进制文件名(以用户调用的绝对路径或相对路径为前缀). 在Perl中,第一个命令行参数$ARGV [0]是脚本的路径和名称之后的第一个命令行参数. Perl脚本如何获取用于调用它的路径和名称? 谢谢! 解决方法 “In C
在C/C++中(bash,也是?)第一个命令行参数argv [0]是二进制文件名(以用户调用的绝对路径或相对路径为前缀).

在Perl中,第一个命令行参数$ARGV [0]是脚本的路径和名称之后的第一个命令行参数.

Perl脚本如何获取用于调用它的路径和名称?

谢谢!

解决方法

“In C/C++++ (bash,too?) the first command-line argument,argv[0],is the binary filename”

顺便说一句,这是错误的. ISO标准不要求这样做.

来自C99:

If the value of argc is greater than zero,the string pointed to by argv[0] represents the program name; argv[0][0] shall be the null character if the program name is not available from the host environment.

并注意它表示“代表程序名称”,而不是“是二进制可执行文件的位置”.那是因为有一个早期的片段说明:

… the array members argv[0] through argv[argc-1] inclusive shall contain pointers to strings,which are given implementation-defined values by the host environment prior to program startup.”

对于你的argv [0],命令“sleep 60”是“pax的梦幻般的睡眠效用”而不是“/ bin / sleep”是完全合法的.

简而言之,环境不必提供程序的表示,即使它确实如此,它也不必是用于定位二进制的任何东西.

但是,由于厌倦了我的dia骂,Perl为此目的提供$0或$PROGRAM_NAME(以那种可怕的“英语”模式).有关详情,请参见perlvar.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读