问题标签 [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 投票
2 回答
523 浏览

c++ - 在字符串中使用变量

在我的程序中,需要的部分资源是存储数据的目录。按照惯例,我决定制作这个目录~/.program/。在 c++ 中,创建此目录(在基于 UNIX 的系统上)的正确方法是以下代码:

~现在,至少使用in的可靠性值得mkdir("~/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)怀疑,所以我真正想做的是提示输入用户名,将其存储在string(like string usern; cin >> usern;) 中,然后执行mkdir("/home/{$USERN}/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)(like in shell)。但是,我不知道如何将 $USERN 的等价物放入字符串中,例如,我不知道如何将可扩展的 c++ 构造放入字符串中。我的意思是我将任何“形式”的变量插入到字符串中,该变量的内容会扩展为该变量的内容。

如果这个问题令人困惑,我深表歉意,我似乎无法很好地解释我到底想要什么。

或者,更可取的是,是否可以在不提示的情况下获取用户名?(当然,并将其存储在一个字符串中)

0 投票
3 回答
112 浏览

c - unistd write() 在连续 100 次套接字写入/读取后停止写入,程序返回 3328 错误代码

我正在尝试测试我的网站可以处理的流量,因此我创建了一个 C 程序来向我的网站发送一堆连续的请求(可能不是最好的方法,但我这样做只是因为我真的不知道C,不是因为我真的需要测试负载处理)。以下是相关代码(如果您真的觉得需要完整源代码,请参见此处):

其中socket_id是已建立的套接字连接的 id,request是要发送的 HTTP 请求,以及将存储message结果的位置。read这是 HTTP GET 请求:

我正在通过我网站中的 php 脚本跟踪浏览量。

无论线程多长时间sleep,它在 100 次写入/读取后仍然崩溃。为什么是这样?

0 投票
2 回答
655 浏览

c++ - unistd read() 不起作用

我正在尝试使用 unistd 库编写/读取文本文件。稍后我会将它部署到 /dev 路径中的一个文件中。我正在尝试使用std::vectortype 而不是char buffer[]. 所以我写了两个实现,一个使用向量,另一个使用 char 缓冲区。两者都在文件中写入良好,但都无法读取文件。

这是我的测试代码:

使用 char 缓冲区

使用向量的缓冲区

谢谢大家!

0 投票
2 回答
335 浏览

c++ - atof 核心转储与 getopt

我正在编写一个 C++ 应用程序,它将华氏温度转换为摄氏度和开尔文,将开尔文转换为摄氏度和华氏度等。由于在这里编写交互式应用程序很愚蠢,我决定熟悉 unistd.h 中的 getopt 函数。

格式: F2C -k 273.15

输出:

FAHR CELSIUS KELVIN

32 0 273.15

这是我的代码:

我的问题是,每当我使用不接受任何参数的选项(如 -v)时,我都会得到一个核心转储。

dbx向我展示了 SIGSEV 出现在第 70 行(float floatarg = atof(optarg);)。

当我像这样运行程序时:

./F2C -k 273.15

数学计算正确,我得到了清晰的打印输出。只有当我使用-v-h我的程序 SIGSEV 时。

额外的信息:

该程序是使用 Sun Studio 编译器套件 5.12 版编译的。

我对为什么我的程序 SIGSEV 感到完全困惑。这是不一致的,没有任何意义。我将不胜感激任何可用的帮助。

0 投票
0 回答
16 浏览

multiprocessing - 分离的、分叉的、进程可以共同访问共享的动态分配、指针、内存吗?

我正在尝试并行添加两个简单的 4x4 矩阵。子进程只添加奇数行,父进程添加偶数行。但是,我似乎无法让进程在共享指针内存上工作,并且输出总是分成两半,如代码下方所示:

这是上述代码中最后一个 for 循环的输出:

0 投票
1 回答
243 浏览

c - 从 stderr 而不是 stdin 读取

我在野外遇到了这样的代码,我想知道为什么会这样。代码从 stderr (fd==2) 而不是 stdin (fd==0) 读取。奇怪的是这实际上有点作用。您可以在控制台读取输入,但不能读取管道输入。知道这里发生了什么吗?

0 投票
1 回答
358 浏览

c++ - 无法使用 read() 将文件内容读入缓冲区

以下是在 Ubuntu OS 16.04 上使用 GNU 编译器(g++ 命令)编译的示例代码:

编译时;我收到这条消息:

执行时:

可以在这里找到整个 gdb 调试。

问题:为什么当文件合法且编译器没有错误时,文件内容不会被读取?

ts.mp4 权限

0 投票
1 回答
308 浏览

linux - execl 崩溃 C++ node.js-addon

正常 C++execl工作正常(编译g++ ok.cc -o ok.elf

但是当作为 node.js C++ 插件工作时会崩溃

node.js 扩展崩溃

node.js v8.9.1
node-gyp v3.6.2
gcc 版本6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2)

0 投票
1 回答
1061 浏览

c - 使用 CC 编译器 (Solaris) 时链接 unistd.h

我需要<unistd.h>在 Solaris 上使用 CC 编译器链接我的程序。当我需要链接<math.h>或者<curses.h>我只是使用谷歌查找-lm-lcurses标记但这次谷歌没有帮助时。如何找出位于哪个lib*something*位置<unistd.h>

0 投票
2 回答
6720 浏览

c - fsync 和 syncfs 有什么区别?

fsync 和 syncfs 有什么区别?

fync 的联机帮助页说明如下:

fsync() 将文件描述符 fd 引用的文件的所有修改的内核数据(即修改的缓冲区缓存页面)传输(“刷新”)到磁盘设备(或其他永久存储设备),以便所有即使在系统崩溃或重新启动后,也可以检索更改的信息。这包括写入或刷新磁盘缓存(如果存在)。呼叫阻塞,直到设备报告传输已完成。它还刷新与文件关联的元数据信息(请参阅 stat(2))。

syncfs 的联机帮助页说明如下:

sync() 导致对文件元数据和数据的所有缓冲修改都写入底层文件系统。

syncfs() 与 sync() 类似,但仅同步包含由打开文件描述符 fd 引用的文件的文件系统。

对我来说,两者似乎都是平等的。他们正在同步文件描述符和相关元数据引用的文件。