c - 尝试在 Unix 上运行 C 程序,但对输入文件的处理方式有点困惑

标签 c shell unix input

我正在尝试在 Unix 环境中运行 C 程序,并且我也有一个输入文件。老师说我们输入就可以运行

gcc programName ./a.out inputFile

gcc programName ./a.out inputFile > viewFile

我的问题是:这在 C 程序中是如何处理的?例如,输入文件是否被添加为 main 的参数(或类似其名称或其他内容),或者它的行为是否像从 system.in 或其他内容读取?

我收到一条消息,指出打开输入文件时出错,并且我有 int main(int argc, char* argv[])。如果有人可以解释发生了什么以及如何处理输入文件,我将非常感激。

最佳答案

您的教授提到了两种调用文件的方法:

  1. ./a.out inputFile
  2. ./a.out inputFile > viewFile

对于两种形式:

  • argc 将是 2
  • argv[0] 是代表程序名称的字符串,
  • argv[1] 将是 "inputFile"

POSIX shell 将 > filename 解释为将程序的输出(特别是 stdout)重定向到给定的文件名。

从程序的角度来看,命令重定向不会出现在参数列表中(尽管通常有特定于系统的方法来查找原始命令行)。

关于c - 尝试在 Unix 上运行 C 程序,但对输入文件的处理方式有点困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551669/

相关文章:

c++ - 为每个变量创建一个新的 typedef 有什么意义?

恢复进程的 Linux 命令

bash - 如何设置目录以具有持久组权限?

python - 在进程终止前获取进程快照

C 文件 IO 问题。程序未按预期运行。

C 用双向链表交换

c - 如何读取字符串中的字符?

bash - 在(=)符号后用空格分配变量?

linux - 如何重命名文件夹中的所有文件并创建重命名映射

python - 使用文件作为stdin在python中执行shell命令