C:stdin和std * errs

我想操纵Stdin然后操纵Std* 。 但我收到以下错误,

 $ gcc testFd.c testFd.c:9: error: initializer element is not constant testFd.c:9: warning: data definition has no type or storage class testFd.c:10: error: redefinition of `fd' testFd.c:9: error: `fd' previously defined here testFd.c:10: error: `mode' undeclared here (not in a function) testFd.c:10: error: initializer element is not constant testFd.c:10: warning: data definition has no type or storage class testFd.c:12: error: syntax error before string constant 

该计划如下所示。

 #include  #include  int STDIN_FILENO = 1; // I want to access typed // Shell commands, dunno about the value: unsigned long F_DUPFD; fd = fcntl(STDIN_FILENO, F_DUPFD, 0); fd = open("/dev/fd/0", mode); printf("STDIN = %s", fd); 

更新错误:只是试图获得一个关于文件描述符的示例程序在C中工作,错误地报告错误

 #include  #include  int main (void) { int STDIN_FILENO; // I want to access typed // Shell commands, dunno about the value: unsigned long F_DUPFD; int fd; const char mode = 'r'; fd = fcntl(STDIN_FILENO, F_DUPFD, 0); /* also, did you mean `fopen'? */ fd = fopen("/dev/fd/0", mode); printf("STDIN = %s", fd); return 0; } 

程序执行如下所示。

 $ gcc testFd.c testFd.c: In function `main': testFd.c:14: warning: passing arg 2 of `fopen' makes pointer from integer without a cast testFd.c:14: warning: assignment makes integer from pointer without a cast 

尝试使用main方法:

 #include  #include  int main (void) { int STDIN_FILENO = 1; // I want to access typed // Shell commands, dunno about the value: unsigned long F_DUPFD; /* also, declare the type of your variable "fd" */ int fd; fd = fcntl(STDIN_FILENO, F_DUPFD, 0); /* also, did you mean `fopen'? */ fd = open("/dev/fd/0", mode); printf("STDIN = %s", fd); return 0; } 

你忘了你的main()函数!!

你对main()定义在哪里?

除了你没有main()函数之外,你的整个方法都是错误的。 STDIN_FILENO是一个常量; 分配它没有任何意义。

尝试通过一些细节来解释你真正想做的事情 ,我们将能够建议如何去做。