- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在我的简单程序中:
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sstream>
using namespace std;
int main(int argc, char *argv[]) {
stringstream ss;
ss << "What does the quick brown fox say?" << endl;
int file_descriptor = open("/dev/tty", O_RDONLY | O_WRONLY);
write(file_descriptor, ss.str().c_str(), ss.str().size());
}
我使用 O_RDONLY
组合打开终端流 | O_WRONLY
,这似乎工作正常。我知道您应该使用 O_RDWR
因为它使语义更清晰,但我的问题是如果连接两个现有标志已经有效,为什么还要创建一个完整的其他标志?这是否有一些历史原因,或者我只是忽略了一些东西,而这真的不起作用?
最佳答案
O_RDONLY | O_WRONLY
(至少在我的 Linux 机器上)与 O_RDWR
不同。
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
它起作用的事实似乎是错误/功能/巧合,而不是“它起作用是因为它应该那样起作用”。
关于c++ - 使用 O_RDWR 与 O_RDONLY | O_WRONLY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365109/
mmap() 是否应该能够创建一个O_WRONLY 打开文件的只写映射? 我问是因为以下在 Linux 4.0.4 x86-64 系统上失败(strace 日志): mkdir("test", 070
mmap() 是否应该能够创建一个O_WRONLY 打开文件的只写映射? 我问是因为以下在 Linux 4.0.4 x86-64 系统上失败(strace 日志): mkdir("test", 070
#include #include #include #include #include char data [ 6 ]; main ( ) { int len; desc = open (
这是我的简单代码,它打开一个命名管道,向其中写入一个字符串,然后关闭管道。管道是在另一个函数中创建的,如下所述。 char * ipcnm = "./jobqueue"; std::cout << "
在我的简单程序中: #include #include #include #include using namespace std; int main(int argc, char *argv
我需要打开一个文件进行写入。如果文件已经存在,我不想截断它。 换句话说,在纯 C 中我会这样做: int fd = open("output.bin", O_WRONLY | O_CREAT, 066
是否可以从 nodejs 访问操作系统常量 O_RDONLY、O_WRONLY、O_APPEND 等的值? 我知道它们在所有平台上都不一样,所以正确的方法是使用常量而不是依赖我当前系统中的硬编码值。
我有一个向文件追加一行的 Go 函数: func AppendLine(p string, s string) error { f, err := os.OpenFile(p, os.O_AP
我正面临标题所说的确切问题。 代码 pid_t childpid; int childfdRead, childfdWrite; // file descriptors for childs int
我知道 open 提供了这些互斥的标志:O_RDONLY、O_WRONLY 和 O_RDWR。 我想知道:如果文件以 O_RDWR 和 打开,是否存在任何性能问题(即使只是几分之一毫秒)或处理文件的不
在我的代码中,我创建了一个名为“my_fifo”的 fifo,如果我在 O_WRONLY | 中打开它的话O_NONBLOCK 模式,open() 返回 -1 和错误编号“没有这样的设备或地址”,另一
问题和标题一样,操作系统是linux。 我试过几个例子。 dup(1); close(1); int fd = open("/dev/stdout", O_WRONLY); 这导致了“/dev/std
我是一名优秀的程序员,十分优秀!