问题标签 [unistd.h]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1753 浏览

c - stdio.h 或 unistd.h,文件创建/写入/读取哪个更快?

哪些标头函数在创建、编辑和读取许多小文件时更快?大约数千个文件,每个文件大约 100 字节。我在 Windows 上使用 C,Devcpp。提前致谢。

0 投票
0 回答
146 浏览

c++ - 从 unistd.h 读取的行为

我有从文件描述符读取的代码readfrom unistd.h。我在遇到线程read退出的地方出现了奇怪的行为,我在文档中找不到任何可以解释这一点的东西。

有谁知道为什么会发生这种情况?

我不确定发布代码是否有帮助,有很多不相关的代码片段,但这是一个精简的版本:

我对文件描述符的初始化:

m_serialFD是类型的成员,int这发生在构造函数中)

稍后在构造函数中,我初始化了一个互斥体成员变量:

稍后在成员函数中:

message只是一个chars nBytes长数组)

我在读取调用周围锁定了一个互斥锁,因为我有多个成员函数进行读取和写入,并且我不希望响应混淆。我注意到的一件事是,当我只使用一个从 m_serialFD 读取的线程运行此代码时,我没有问题,但多个线程会导致退出行为。

0 投票
3 回答
1104 浏览

c - C将文件内容从EOF复制到SOF

我的程序几乎可以正常工作。预期目的是从末尾读取文件并将内容复制到目标文件。然而,让我感到困惑的是lseek()方法更多,所以我应该如何设置偏移量。

src现在的内容是:
Line 1
Line 2
Line 3

目前我在目标文件中得到的是:
Line 3
e 2
e 2 ...

据我了解,调用int loc = lseek(src, -10, SEEK_END);会将源文件中的“光标”移动到末尾,然后将其从 EOF 偏移到 SOF 10 个字节,并且 loc 的值将是我扣除偏移后的文件大小。然而,在 C 的 7 小时后,我几乎在这里脑死亡。

0 投票
2 回答
212 浏览

c - open() 和 read() 系统调用...程序未执行

我正在尝试制作一个程序,使用所述系统调用将 512 个字节从一个文件复制到另一个文件(我可以制作几个缓冲区,memcpy() 然后 fwrite() 但我想练习 Unix 特定的低级 I/ ○)。这是代码的开头:

我知道我没有处理读取的文件大小不会是 512 的倍数的事实。但首先我真的需要弄清楚两件事:

  1. 为什么我的消息没有显示?也没有分段错误,所以我最终不得不抄送程序

  2. 这些低级函数究竟是如何工作的?是否有一个指针随着每个系统调用而变化,比如如果我们使用 FILE *file 和 fwrite,我们的 *file 会自动递增,还是我们必须手动递增文件指针?如果是这样,假设 open() 等从不指定文件指针,而只是指定文件 ID,我们将如何访问它?

任何帮助都会很棒。请。谢谢!

0 投票
1 回答
28 浏览

c - 不调用目录 prwoling 递归函数

我在制作递归目录列表器时遇到的问题之一是在递归函数的堆栈中没有调用目录检查后的调用。

}

它上升了一个子目录,但如果这些目录有子目录,它就不会打扰......所以,有人可以解释一下我做错了什么吗?谢谢。

0 投票
2 回答
1774 浏览

c - 函数swab的隐式声明

0 投票
4 回答
475 浏览

c - 同一文件上的多个 read() 操作

我正在研究使用 read() 函数来读取整个数据结构,每个数据结构的类型都与其他数据结构相同,但数据不同,然后将它们放入链表中。出于某种原因,我似乎找不到任何关于如何终止循环的具体信息,其中read(fp, &tmp, sizeof(struct foo))包括new_node(tmp).

我希望能够简单地阅读直到 EOF,但我不知道如何使用 read() 函数确定 EOF 所在的位置。显然,我可以使用 write() 函数的变通方法,在写入之前我将在文件中包含结构的数量,然后在达到该数量时终止读取函数,但这似乎有点笨拙,并且避免了原来的知道文件何时终止的想法。

跟进:

我感谢您的帮助,并且我已经实施了我所看到的。不幸的是,我相信我可能读错了信息。相关代码:

这是写循环的输出:

该文件以二进制形式保存,但我可以清楚地知道只有尾部似乎被写入了五次。我不确定为什么会这样。

读取循环中诊断 printf 的输出是:

输出让我觉得它将下一个指针的值放入数据 int 中。知道为什么:1)我可能连续五次在同一个节点上写()?2)当我阅读()时我变得乱码?

0 投票
1 回答
123 浏览

c - read() reading pointers or write() writing the wrong data?

So...what I'm trying to do is write a linked list into a file and then read it back in to a program again after terminating the program and restarting. I keep getting gibberish in when reading from the file to the linked list. In addition, I believe that the write() loop may be writing the same node repeatedly. I would like to know if I'm perhaps mixing something up. I don't seem to be able to find the problem with the code myself, for all that I've looked through the man pages and checked google.

The pertinent code:

This is the output from the write loop:

The file is saved in binary, but I can make out enough to know that only the tail seems to be written, five times. I'm not sure why that is.

The output for the diagnostic printf's in the read loop is:

The output makes me think it's putting the value of the next pointer into the data int. Any idea why: 1) I might be write()ing the same node five times in a row? 2) I am getting gibberish when I read()?

0 投票
6 回答
986 浏览

c - 无法将 char 指针传递给 gethostname (Linux)

以下 C 程序尝试获取并打印当前 RHEL 主机的主机名。segmentation fault它在这台机器上抛出一个。根据gethostname的定义,我应该能够传递一个 char 指针,不是吗?

当我改用 char 数组(如char hname[255])时,调用gethostname有效。(如果我这样做了,我将如何将数组返回到 main?)

输出:

0 投票
1 回答
182 浏览

c++ - 当 write 返回较小的尺寸时我该怎么办?

我正在编写一个围绕通用文件操作的包装器,并且不知道如何处理当 write 返回一个较小大小的情况时写入然后提供。

write的手册页说:

写入的字节数可能少于 count,例如,底层物理介质上的空间不足,或者遇到 RLIMIT_FSIZE 资源限制(参见 setrlimit(2)),或者调用被信号处理程序中断后写入少于 count 个字节。(另请参见管道 (7)。)

根据我对上述内容的理解,这是错误(中满)和返回(中断呼叫)的混合。如果我的文件描述符都是非阻塞的,我不应该得到中断情况,那么唯一的原因就是一个错误。我对吗 ?

代码示例: