- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始对 C
中的文件描述符
感兴趣,我编写了以下代码:
int main (void)
{
int fd1, fd2, sz;
char *buf = "hello world !!!";
char *buf2 = malloc(strlen(buf));
fd1 = open ("test.txt", (O_RDWR | O_CREAT));
printf("file fd1 created\n");
write(fd1, buf, strlen(buf));
printf("write %s, in filedescpror %d\n", buf, fd1);
sz = read(fd1, buf2, strlen(buf));
printf("read %s, with %d bytes from file descriptor %d\n", buf2, sz, fd1);
close(fd1);
fd2 = open ("testcpy.txt", (O_RDWR | O_CREAT));
write(fd2, buf2, strlen(buf));
close(fd2);
return 0;
}
通常:
buf
粘贴到 fd1
fd1
并将数据存储在bf2
bf2
被解析为 fd2
第一个问题是我在结果中获得的权限不正确,发生的情况是 buf2
之外的内容被解析为 fd2
。
谁能告诉我发生了什么事,我的代码是否错误,或者发生的事情是否是预期的行为。
最佳答案
您需要在 write()
之后倒回 buff,并添加权限(open()
的第三个参数),这是一个基本示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
int main (void)
{
int fd1, fd2, sz;
char *buf = "hello world !!!";
char *buf2 = malloc(strlen(buf) + 1); // space for '\0'
fd1 = open ("test.txt", (O_RDWR | O_CREAT), 777); // 3rd arg is the permissions
printf("file fd1 created\n");
write(fd1, buf, strlen(buf));
lseek(fd1, 0, SEEK_SET); // reposition the file pointer
printf("write %s, in filedescpror %d\n", buf, fd1);
sz = read(fd1, buf2, strlen(buf));
buf[sz] = '\0';
printf("read %s, with %d bytes from file descriptor %d\n", buf2, sz, fd1);
close(fd1);
fd2 = open ("testcpy.txt", (O_RDWR | O_CREAT));
write(fd2, buf2, strlen(buf));
close(fd2);
return 0;
}
关于c - 为什么 O_RDWR 在这段代码中没有给我写和读权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892017/
我使用的是更新和升级的 ubuntu 14.0.4LTS。 我写了一个串口通信的代码。 #include #include #include #include #include
我创建了这个文件 char *output = "big"; creat(output, O_RDWR); 当我尝试读取文件时 cat big 我的权限被拒绝了。我的代码有什么问题?如何创建具有读写
我开始对 C 中的文件描述符感兴趣,我编写了以下代码: int main (void) { int fd1, fd2, sz; char *buf = "hello world !!!
我找不到关于如何锁定文件以进行读写的答案。 lock.l_type = F_WRLCK //for write. lock.l_type = F_RDLCK //for read lock.l_typ
在我的 C 代码中,我使用 open() 和选项 O_CREAT|O_RDWR 写入文件,然后是 write(): readfd = open("ak.bin", O_CREAT|O_RDWR
我想读取一个文件并更改其内容并将其写回文件。 我使用 open 读取文件如下: bfd = open(m_file_name.c_str(), O_RDWR) 但是当我写的时候,它有点像附加到旧的。我
我编写了一个从闪存 Nand(没有文件系统)读取数据的代码。 fd = open("/dev/mtd0", O_RDONLY) 它有效,然后我想尝试读写它..所以我将代码更改为: fd = open(
在我的简单程序中: #include #include #include #include using namespace std; int main(int argc, char *argv
使用函数 Open() 或 OpenFile(path, os.O_RDONLY) 后我可以读取文件,但之后无法删除文件。所以我尝试使用写标志 os.RDWR 打开文件,如下面的代码,看看我是否可以删
我想将触摸屏事件写入‘/dev/input/event1’,但它运行‘open("/dev/input/event1", O_RDWR);'权限被拒绝。我的手机已经 Root ,我用代码获得了根: S
我知道 open 提供了这些互斥的标志:O_RDONLY、O_WRONLY 和 O_RDWR。 我想知道:如果文件以 O_RDWR 和 打开,是否存在任何性能问题(即使只是几分之一毫秒)或处理文件的不
我正在尝试使用 打开一个临时文件 fd = open("/tmp", O_RDWR | O_TMPFILE, 0); if (fd == -1) { perror("open()");
我正在尝试注册为 Symfony 2 项目的新用户,我一直在努力。这是突然冒出来的。它昨天在办公室工作,我在家里设置了类似的设置。我得到了: Warning: session_start(): ope
当我将 index.php 文件更改为 index.html 文件然后再次更改回其原始 index.php 文件时出现此错误 谁能告诉我如何避免这个错误? Warning: session_start
我的应用程序有一个小问题。 首先我安装 i2c-tools 包, 我向所有用户授予 dev/i2c* 文件的所有权限。 之后,在 etc/modules 文件中添加行 i2c-dev i2c 设备存在
我正在尝试为结构构造函数编写单元测试,如果在 file.Open 期间发生错误,它也可能返回 nil。我不知道如何使用标志测试/模拟文件错误:os.O_RDWR|os.O_CREATE|os.O_AP
我正在将一些代码从 Win32 移植到使用锁定文件的 Linux。我用 open 为 Linux 做了一个实现,但我不确定如果文件在 Samba 共享上它是否会工作。我试过了,它似乎可以正常工作,但我
我是一名优秀的程序员,十分优秀!