|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: #include <unistd.h> ! 8: ! 9: // 自動変数みたいな生存期間を持つディスクリプタ ! 10: class autofd ! 11: { ! 12: public: ! 13: autofd() { ! 14: fd = -1; ! 15: } ! 16: autofd(int fd_) { ! 17: fd = fd_; ! 18: } ! 19: ! 20: ~autofd() { ! 21: if (fd >= 0) ! 22: close(fd); ! 23: } ! 24: ! 25: autofd& operator=(int fd_) { ! 26: fd = fd_; ! 27: return *this; ! 28: } ! 29: operator int() const { ! 30: return fd; ! 31: } ! 32: ! 33: // 明示的にクローズする ! 34: int Close() { ! 35: int rv = 0; ! 36: if (fd >= 0) { ! 37: rv = close(fd); ! 38: fd = -1; ! 39: } ! 40: return rv; ! 41: } ! 42: ! 43: public: ! 44: int fd; ! 45: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.