因此,我正在使用一个用TCL编写的程序,该程序使用FLOCK函数锁定文件。与当前运行的版本相比,我在较新版本的Linux上测试它。我发现,当较新的机器运行脚本时,它使用的是from /usr/bin/ FLOCK,这与TCL版本的FLOCK不同。TCL版本使用-read -write等,而Linux版本则使用完全不同的选项。
简而言之,程序停止工作,当它到达任何群集呼叫时出错。如果我更改选项以适应Linux版本,它会破坏其他机器上的程序。
是否有办法使它使用TCL版本而不是Linux版本?
发布于 2012-08-02 10:07:00
Tcl本身不附带flock命令,但如果您正在进行交互测试,您可能会看到它自动尝试使用系统命令。这种系统命令的自动使用并不是在脚本中完成的(这很容易由于不同的路径而导致不稳定),因此在编写脚本时,您应该明确说明您的意思。
如果您想使用system命令(它本身是不可移植的,特别是对于非Linux系统),那么只需:
exec flock $options...请注意,Tcl使用了引用shell的不同形式的参数。这有时会让人在编写exec调用时被抓出来。
或者,使用TclX包中的flock Tcl命令。其语法与Linux系统实用程序的语法略有不同,很大程度上是因为它的级别有点低。对它有利的是,它的便携性更强。
https://stackoverflow.com/questions/11767476
复制相似问题