一般情况下利用main()函数自带的特性来进行参数获取
#include
int main(int argc ,char *argv[ ])
{
int i;
for(i=1;i
{
printf("参数是%s\n",argv[i]);
}
printf("参数个数是:%d\n",argc-1);
return 0;
}./a.out asdf asdf
参数是asdf
参数是asdf
参数个数是:2
但是重定向后
./a.out <2.c
参数个数是:0
无法获取2.c
解决:
#include
#include
int main(int argc, char** argv)
{
int fd = fileno(stdin); //int fileno(FILE *stream)用来取得参数stream指定的文件流所使用的文件描述符
char s[256] = {0}, name[256] = {0};
snprintf(s, 255, "/proc/%d/fd/%d", getpid(), fd);
readlink(s, name, 255);
printf("%s\n", name);
return 0;
}
./a.out <2.c /home/ming/2.c 返回重定向后的文件绝对路径