【发布时间】:2017-04-01 18:43:58
【问题描述】:
我遇到了关于系统功能的问题。如果我跑
echo -e '\x2f'
在shell中,输出是/,但是当我把命令放在C程序中时:
int main(int argc, char* argv[], char** envp)
{
printf("The command is :%s\n",argv[1]);
system( argv[1] );
return 0;
}
输出是:
The command is :echo -e '\x2f'
-e \x2f
为什么system函数输出'-e \x2f'而不是'/'
顺便说一句,我使用 Python 输入 argv:
# I used \\ because python will transfer \x2f to / automatially
command="echo -e '\\x2f'"
p=process(executable='/home/cmd2',argv= ['/home/cmd2',command])
print (p.readall())
【问题讨论】:
-
因为脚本由
/bin/sh运行,而不是/bin/bash和/bin/sh不会解释与/bin/bash相同的东西。