我在centos 6.5上写了一个简单的c应用程序和测试,代码如下
int main(int argc, char *argv[]) {
fprintf(stderr, "%s\n", argv[1]);
return 0;
}
当我使用./test $
运行应用时,打印值为$
,但如果我使用./test $$
运行,则打印值更改为119688
,是$
中linux
的特殊含义,我发现它在Windows上运行正常。
答案 0 :(得分:2)
$$
是当前流程' ID:
[mhawke@localhost-localdomain ~]$ echo $$
10062
[mhawke@localhost-localdomain ~]$ ps -ef | grep bash
mhawke 10062 10056 0 10:48 pts/0 00:00:00 bash
当您从命令行运行程序时,shell将$$
替换为进程ID,并且您的程序将其作为第一个参数接收。
要将$$
传递给您的程序,只需将其用单引号括起来:
[mhawke@localhost-localdomain ~]$ ./test '$$'
来自bash
手册页:
BASHPID
扩展到当前bash进程的进程ID。这在某些情况下与$$不同,例如子壳 不需要重新初始化bash。