2011-05-11 60 views
0

我有一个非常简单的程序下面。错误:命令未找到,发送命令行参数

#include<stdio.h> 
void main(int argc, char *argv[]) 
{ 
    printf("\n %s",argv[3]); 
} 

说可执行文件名为a.out并运行它作为$/a.out的开放路径/要/我的/文件O_WRONLY |。O_APPEND 给出命令中没有发现错误。 其中运行它为运行它为$。/ a.out打开路径/到/我/文件O_WRONLY 给出输出O_WRONLY。

是因为|

感谢您宝贵的时间。

+1

逃脱这样的:'O_WRONLY ./a.out开放路径/要/我的/文件\ | O_APPEND'甚至尝试像这样:'./a.out open path/to/my/file O_WRONLY'|'O_APPEND' –

+0

@John非常感谢。 –

回答

2

您的shell将O_APPEND之前的|作为管道,并且无法识别此命令(因为它不存在),请尝试$./a.out open path/to/my/file "O_WRONLY|O_APPEND"

另外,不要使用void main,使用int main(有些人在这里可能会得到一个心脏发作,如果他们看到它:))

+0

谢谢...: - )(是的,我想虚空主要会给许多C-orthodoxians心脏病发作)\ –

2

管道符|具有特殊意义的外壳:它创建一个管道,其中一个进程的输出传送到另一个进程的输入中。当您键入foo | bar时,shell会用命令行foobar生成两个进程,并将前者的输出连接到后者的输入。

为了避免这种情况,把周围的命令行参数报价:

$ ./a.out open path/to/my/file "O_WRONLY|O_APPEND" 
+0

谢谢...现在对我来说这似乎是一个非常愚蠢的问题 –