错误:发送命令行参数时找不到命令

时间:2011-05-11 06:21:55

标签: c linux

下面有一个非常简单的程序。

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

假设可执行文件名为a.out并将其作为$。/ a.out打开路径/运行到/ my / file O_WRONLY | O_APPEND  给命令找不到错误。 运行它的运行方式为$。/ a.out open path / to / my / file O_WRONLY 给出输出O_WRONLY。

是因为|

谢谢你宝贵的时间。

2 个答案:

答案 0 :(得分:2)

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

此外,请勿使用void main,请使用int main(如果有人在这里看到它可能会受到心脏病发作:))

答案 1 :(得分:2)

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

要避免此行为,请在命令行参数周围加上引号:

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