下面有一个非常简单的程序。
#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。
是因为|
谢谢你宝贵的时间。
答案 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会使用命令行foo
和bar
生成两个进程,并将前者的输出连接到后者的输入。
要避免此行为,请在命令行参数周围加上引号:
$ ./a.out open path/to/my/file "O_WRONLY|O_APPEND"