【发布时间】:2014-03-10 01:23:37
【问题描述】:
我想知道是否有办法在 C 程序中访问标准输入文件的名称。我环顾四周,并没有发现任何东西。例如
./a.out
C 程序中有没有办法打印出文件名(file.txt)?
【问题讨论】:
-
您为什么要这样做?这是一个相当不寻常的要求,不符合 UNIX 精神。
-
一般不会。它根本不是文件 - 回答 here.
我想知道是否有办法在 C 程序中访问标准输入文件的名称。我环顾四周,并没有发现任何东西。例如
./a.out
C 程序中有没有办法打印出文件名(file.txt)?
【问题讨论】:
如果您使用的是 Linux,您可以通过读取 /proc/[pid]/fd/0 或解析 lsof -p [pid] 中的内容来完成您想要的操作,其中 [pid] 是您的进程的进程 ID。
请参阅 proce(5) 和 lsof(8)。
【讨论】:
printf("%s", argv[1]);
确保您的主设置可以接受命令行参数
int main(int argc, char** argv)
【讨论】:
./a.out file.txt,而不是./a.out < file.txt。