You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell开发项目:如何获取三个保留文件描述符的名称?

解决Shell保留文件描述符名称获取问题

首先明确:没有标准系统调用或库函数能直接返回0/1/2对应的标准流名称,因为这三个文件描述符的映射是POSIX标准强制约定的,系统层面不会提供动态查询接口。

可行的实现方案:

  • 直接硬编码映射表
    既然是标准约定,在代码里建立固定关联是最可靠的做法,比如用结构体数组存储:

    // C语言示例代码片段
    typedef struct {
        int fd;
        const char* name;
        const char* mode;
    } OpenFileEntry;
    
    OpenFileEntry reserved_entries[] = {
        {0, "stdin", "r"},
        {1, "stdout", "w"},
        {2, "stderr", "w"}
    };
    

    初始化你的已打开文件列表时,直接遍历这个数组插入条目即可。

  • 可选的验证逻辑(非必须)
    如果需要确认这些fd确实对应标准流,可以用fstat()检查文件类型(比如是否为字符设备,对应终端),但这只能做验证,无法获取名称。

补充说明:
所有POSIX兼容系统都严格遵循0=标准输入、1=标准输出、2=标准错误的约定,硬编码是行业通用实现方式,完全符合规范,不需要动态查询。

内容的提问来源于stack exchange,提问作者jamondebellota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:44:56