fs: add sync open flags 'rs' and 'rs+'
This commit is contained in:
parent
643f00d3f9
commit
dfcdd5b8aa
@ -270,6 +270,13 @@ An exception occurs if the file does not exist.
|
|||||||
* `'r+'` - Open file for reading and writing.
|
* `'r+'` - Open file for reading and writing.
|
||||||
An exception occurs if the file does not exist.
|
An exception occurs if the file does not exist.
|
||||||
|
|
||||||
|
* `'rs'` - Open file for reading, telling the OS to open it synchronously
|
||||||
|
(ie using the O_SYNC flag). Whilst rarely useful, when used with caution by
|
||||||
|
those who know what they're doing it can be sometimes necessary. Note that
|
||||||
|
this doesn't turn `fs.open()` into a synchronous blocking call, if that's what
|
||||||
|
you want then you should be using `fs.openSync()`
|
||||||
|
An exception occurs if the file does not exist.
|
||||||
|
|
||||||
* `'w'` - Open file for writing.
|
* `'w'` - Open file for writing.
|
||||||
The file is created (if it does not exist) or truncated (if it exists).
|
The file is created (if it does not exist) or truncated (if it exists).
|
||||||
|
|
||||||
|
@ -210,7 +210,9 @@ function stringToFlags(flag) {
|
|||||||
|
|
||||||
switch (flag) {
|
switch (flag) {
|
||||||
case 'r' : return O_RDONLY;
|
case 'r' : return O_RDONLY;
|
||||||
|
case 'rs' : return O_RDONLY | O_SYNC;
|
||||||
case 'r+' : return O_RDWR;
|
case 'r+' : return O_RDWR;
|
||||||
|
case 'rs+' : return O_RDWR | O_SYNC;
|
||||||
|
|
||||||
case 'w' : return O_TRUNC | O_CREAT | O_WRONLY;
|
case 'w' : return O_TRUNC | O_CREAT | O_WRONLY;
|
||||||
case 'wx' : // fall through
|
case 'wx' : // fall through
|
||||||
|
@ -41,11 +41,19 @@ fs.open(__filename, 'r', function(err, fd) {
|
|||||||
if (err) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
openFd = fd;
|
openFd = fd;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var openFd2;
|
||||||
|
fs.open(__filename, 'rs', function(err, fd) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
openFd2 = fd;
|
||||||
|
});
|
||||||
|
|
||||||
process.on('exit', function() {
|
process.on('exit', function() {
|
||||||
assert.ok(openFd);
|
assert.ok(openFd);
|
||||||
|
assert.ok(openFd2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user