当前位置:  技术问答>linux和unix

用fcntl来获取stdin的标志位,加上了重定向以后结果就变了.为什么?

    来源: 互联网  发布时间:2017-04-19

    本文导语:  有下面这个小程序,用来测试一个文件描述符的文件状态标志: int main(int argc,char* argv[]) {     if(argc!=2){         puts("argc!=2");         return 1;     }     int val=fcntl(atoi(argv[1]),F_GETFL,0);     int accmode=val...

有下面这个小程序,用来测试一个文件描述符的文件状态标志:

int main(int argc,char* argv[])
{
    if(argc!=2){
        puts("argc!=2");
        return 1;
    }
    int val=fcntl(atoi(argv[1]),F_GETFL,0);
    int accmode=val&O_ACCMODE;
    switch(accmode){
        case O_RDONLY:
            puts("read only");
            break;
        case O_WRONLY:
            puts("write only");
            break;
        case O_RDWR:
            puts("read write");
            break;
        default:
            puts("error");
            break;
    }
    if(val&O_APPEND)puts("append");
    if(val&O_NONBLOCK)puts("nonblock");
    if(val&O_SYNC)puts("synchronous write");
    putchar('n');
    return 0;
}

编译运行:

# ./a.out 0
read write
append

但是我如果加上了一个重定向:

# tty
/dev/pts/0
# ./a.out 0 0

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • fcntl的问题。
  • 那位有fcntl函数的源码啊,100分跪求。
  • 昨天发现fcntl设置非阻塞SOCKET会频繁的失败,不知道什么原因.
  • ioctl&fcntl 函数的区别
  • fcntl的一个疑问
  • 关于flock与fcntl区别
  • fcntl函数调用中遇到的问题
  • 请问 termios.h,fcntl.h文件在什么路径下?谢谢
  • UNIX环境下,如何实现dup2函数,不允许调用fcntl?
  • fcntl()是干什么用的?
  • 求助: 一段非常奇怪的代码( 关于fcntl文件锁 )
  • 使用fcntl加强制锁,是不是一定要把这个文件系统设置为允许强制锁阿?
  • 问个关于fcntl函数的问题
  • 关于fcntl函数的问题!
  • 用记录锁fcntl来实现父子进程同步
  • fcntl设定文件锁的问题,求助
  • Linux一些基础问题请教,fcntl
  • 在编写一个同dup(2)功能相同的函数,要求不调用fcntl函数并且要有正确的出错处理
  • 菜鸟求助 apue的例子 关于fcntl函数
  • fcntl函数的使用详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,