为什么我的输入重定向不起作用?

时间:2015-12-07 04:46:41

标签: c linux input

这是我正在尝试运行的代码

#include<stdio.h>
#include<string.h>


int overFlow(char* value){
  char string[8];
  strcpy(string, value);
  return 0;
}

int main(int argc, char** argv){
  char string[10];
  strcpy(string, argv[1]);
  overFlow(string);
  return 0;
}

使用具有此

的简单文本文件
hello

但是当我执行“./program&lt; textfile”时,我遇到了一个段错误。

任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:1)

使用以下命令执行程序时:

./program < textfile

您不会将任何参数传递给程序。所以arg count是1,而这个数组:argv只有程序名

这一行失败了:

strcpy(string, argv[1]);

答案 1 :(得分:-1)

其他答案对于实际原因是正确的。您可以用来调用程序的命令是:

cat textfile | ./myprogram

这样做首先cat命令打印出textfile和|的内容operator将一个命令的输出放入下一个命令的输入中。然后它运行

./myprogram hello

您可能还想增加缓冲区并查看strncpy以防止溢出。