在哪里可以找到对函数 write 的引用?

Where can I find a reference to the function write?

提问人:f ckx 提问时间:3/29/2022 最后编辑:SuperStormerf ckx 更新时间:5/23/2022 访问量:48

问:

我有以下代码用于定义 streambuf 类。我必须根据自己的需要进行调整。在此之前,我必须了解代码的实际工作方式。谁能告诉我在哪里可以找到对 flushBuffer 中写入函数的引用。它需要 3 个参数并返回一个 int。 std::streambuf 没有这样的成员......

//code taken from: The C++ Standard Library Second Edition, Nicolai M. Josuttis, p. 837

class Outbuf_buffered_orig : public std::streambuf {
    protected:
        static const int bufferSize = 10; // size of data buffer
        char buffer[bufferSize]; // data buffer
    public:
        // constructor
        // - initialize data buffer
        // - one character less to let the bufferSizeth character cause a call of overflow()
        Outbuf_buffered_orig() {
        setp (buffer, buffer+(bufferSize-1));
        }
        
        // destructor
        // - flush data buffer
        virtual ~Outbuf_buffered_orig() {
        sync();
        }

    protected:
        // flush the characters in the buffer
        int flushBuffer () {
        int num = pptr()-pbase();
        if (write (1, buffer, num) != num) {
        return EOF;
        }
        pbump (-num); // reset put pointer accordingly
        return num;
        }
        
        // buffer full
        // - write c and all previous characters
        virtual int_type overflow (int_type c) {
        if (c != EOF) {
        // insert character into the buffer
        *pptr() = c;
        pbump(1);
        }
        // flush the buffer
        if (flushBuffer() == EOF) {
        // ERROR
        return EOF;
        }
        return c;
        }

        // synchronize data with file/destination
        // - flush the data in the buffer
        virtual int sync () {
        if (flushBuffer() == EOF) {
        // ERROR
        return -1;
        }
        return 0;
        }
};  //Outbuf_buffered
C++ unistd.h 流布

评论


答:

2赞 YSC 3/29/2022 #1

谁能告诉我在哪里可以找到对写入函数的引用

这是 Linux',定义于 。ssize_t write(int fd, const void *buf, size_t count)<unistd.h>

有关更多信息,请参见 man 2 write

注意:写入文件描述符 #1:标准输出。write(1, ...)

评论

0赞 f ckx 3/29/2022
谢谢!我通常使用Google,然后最终进入著名的C++教程/参考站点,但这次没有成功。您的笔记也有帮助!