小编bot*_*tch的帖子

fopen和open之间有什么关系?

我正在为一个类的项目工作,我们得到一个包含以下代码的.c文件:

int fd = -1;
if (fd < 0)
{
  fd = open ("my_dev", O_RDWR);
  if (fd < 0)
  {
    perror ("open");
    return -1;
  }
...
Run Code Online (Sandbox Code Playgroud)

所以我理解它正在尝试打开一个具有读/写权限的文件"my_dev",然后在成功时返回文件描述符或者在失败时返回负值,但我不明白为什么它给了我"权限被拒绝"始终如一.我试着使用这段代码:

int des = open("my_dev", O_CREAT | O_RDWR, 0777);
...
close(des)
Run Code Online (Sandbox Code Playgroud)

打开/创建文件(这是在另一个块之前调用),但这不起作用,但如果我只是使用它:

FILE* file = fopen("my_dev","w+");
fprintf(file,str);
fclose(file);
Run Code Online (Sandbox Code Playgroud)

我可以写入文件,这意味着我有写权限.现在通常情况下,我只会使用fopen和fprintf来处理所有事情,但对于这个项目,我们必须使用教师的.c文件,它将尝试使用

 open()
Run Code Online (Sandbox Code Playgroud)

这将导致"权限被拒绝"错误,这反过来会搞砸我的代码.

我想我的问题是fopen和open是如何相互关联的?每个人似乎都能够背诵open是一个系统调用,而fopen是一个标准的lib函数,但我似乎无法找到一个明确的答案,我可以用fopen()创建一个可以通过open()打开的文件一个"权限被拒绝"的错误,或者我如何创建一个open()文件然后我可以写入,关闭并再次打开open().

简而言之,如何在C中创建一个我可以写入的文件,稍后用open(O_RDWR)打开?

对不起,如果这是一个小小的,我非常累.

PS:应该注意的是我正在大学计算机上编译和运行,因此权限可能是"怪异的"但是应该注意的是,如果我使用终端命令"dd"创建文件,open()将起作用,此外,我显然有一些写权限,因为我确实可以使用fopen和fprintf写入该文件

c permissions fopen file-descriptor read-write

5
推荐指数
1
解决办法
835
查看次数

Java使用"扩展"与范围分辨率/"点"运算符?

我在阅读一些代码时遇到过这个问题,我完全不知道它意味着什么.我尝试使用谷歌搜索等等,但我没有得到任何东西,可能是由于缺乏词汇量.代码:

public final class GeneralPath extends Path2D.Float 
{
    // code and whathaveyou
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所知道的:

所以我对"公共最终类ClassName extends"部分没有任何疑问,但我不明白超类指定中是否存在点/范围解析运算符.首先,我想有人会说"Java没有范围解析运算符"来澄清Java和Cpp/other-OOP语言之间的细微差别,这很好,我很高兴知道这种微妙的区别."private"关键字在一次hw任务中杀了我,我希望有人注意到Java和C中"private"之间的区别.

我很困惑,因为显然它没有引用超类的成员,因为"成员"是大写的,即使它是,但引用一个对象的成员而不仅仅是对象类本身似乎是多余的.此外,我没有找到关于这个主题的信息,因为大多数编写java how-to的人倾向于从更简单的概念开始,比如"基本"类继承,所以我找不到涉及"dot"运算符的任何内容.使用"extends"关键字.

如果我使用太多技术术语,我想知道为什么他们使用点运算符"Path2D.Float",或者至少,点运算符在这个上下文中做了什么.

太感谢了!

java oop inheritance extends scope

3
推荐指数
1
解决办法
444
查看次数

标签 统计

c ×1

extends ×1

file-descriptor ×1

fopen ×1

inheritance ×1

java ×1

oop ×1

permissions ×1

read-write ×1

scope ×1