问题标签 [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.
c++ - unistd.h 文件未找到,clang++ 和 OS X
我目前正在与clang ++作斗争,在网上看了很长时间后,我决定问我的问题。我在 OS X 上并通过 Emacs 使用 clang++(flycheck 使用它来突出显示错误等)。我有一个非常简单的文件,开头为:
这条线用红色下划线。当我去检查 clang 日志时,这就是我所拥有的:
所以,错误来自iostream
包含,并且iostream
有一个#include <unistd.h>
clang++ 不喜欢的。
我会马上说,我已经安装了 Xcode 和命令行工具。所以我的unistd.h
应该在那里。我的代码也可以编译(通过 g++),所以一切都很好。只是 clang++ 丢失了。
我注意到它在我的 llvm 文件夹(我用自制软件安装)中进行 fetch iostream
,这似乎不正确。他应该进入iostream
我的系统,对吧?所以/usr/local/include/c++/iostream
。这可能是问题吗?如果是这样,我怎么能告诉它正确iostream
?
如果这不是问题,我该如何解决我的unistd.h
问题?
提前致谢 !
编辑:使用clang++ -stdlib=libc++ image.cpp
命令,我得到这个:
所以,同样的问题。
编辑 2:我注意到which clang++
会返回/usr/local/bin/clang++
,所以我专门尝试使用 Xcode clang++,结果如下:
所以与 XCode 捆绑的 C++ 头文件也存在同样的问题。
c - C 的参数行选项解析
我以前看过这里提出的许多问题,我决定使用unistd.h来获取getopt。
但是我需要某个选项取决于以前的选项,如
将在哪里-b
做b_opt/a_opt
因此,-a
必须先解析-b
。
有没有办法实现这个?
谢谢
编辑:简单的方法是创建一个标志并在最后检查它,但是我试图看看是否有更优雅的解决方案。
c - unistd 的 execl() 没有传递任何参数
在我的代码中,我需要执行/bin/bash
,但我不想在不传递任何参数的情况下执行它。我写了这个:
然后,通过一些研究,我意识到我还需要添加类型转换:
但 GCC 仍然给我警告:
这样做的正确方法是什么,我误解了什么,还是我使用了完全错误的函数调用?
c - 使用 write() 函数编写 Unicode
我正在做一个练习,我需要在终端上编写 Unicode,只使用write() in <unistd.h>
。
我不能使用:
- 普查
- 设置语言环境
- printf (实际上练习是再现
printf
功能)
关于如何执行此操作的任何“低级”建议?
c - 为什么即使我不包括 sleep() 也能工作?
我可以sleep
在c
不包含的情况下使用<unistd.h>
,但gcc
会报告:
警告:函数“睡眠”的隐式声明 [-Wimplicit-function-declaration]
但它仍然有效。例如,我可以调用sleep(8)
并使用该time()
函数计算时间,我可以看到 8 秒已过。
为什么会报告此警告?
c - 我在 read() 和 write() 上做错了什么?
我正在尝试做一些初学者内核模块/用户级程序通信。我之前得到了使用fdopen()
效果很好的建议,但我发现我需要使用open()
,read()
而write()
不是。我阅读了这些手册页,并认为我将 fopen、fgets、fputs 正确转换为这些,并且我的程序可以编译,但我没有得到所需的输出。
我有一个计时器,如果我输入./userprogram -s (int) (name)
eg ./userprogram -s 5 hello
,5 秒后它将hello
通过与我的内核模块通信打印到控制台。在我切换到这些新功能后,它改为打印/lib/ld-uClibc.so.0
(现在似乎要等待约 5 秒)。我是否还需要更改内核级代码的工作方式?我以为我只是能够更改用户级程序,内核模块将继续像以前一样工作。这是我尝试使用注释掉的原始代码:
任何建议表示赞赏。
c++ - 为 Windows 实现自定义 unistd.h 以在 Visual Studio 上工作 - 问题
我继承了最初为 linux 编写的 dll 文件的源代码。不幸的是,我正在使用 Windows 和 Visual Studio,而对 linux 的更改是不可能的。特别是,其中一个类需要 unistd.h。
由于windows没有像unistd.h这样的东西,我试着按照 这里写得很好的内容来实现一个。
我创建了一个头文件 unistd.h 并将其添加到我的项目的头文件中(我还根据此自定义了 getopts 。不幸的是,这并没有解决我的问题 - 我的代码不会构建,正如我不断得到
Cannot open include file: 'unistd.h': No such file or directory
我的自定义 unistd.h 是我的解决方案的头文件之一,所以我完全不明白出了什么问题。我已经使用
因为它是一个自定义标题。
任何建议和帮助将不胜感激。感谢您的关注。
c++ - 使用 -std=c++11 作为编译器标志时在 linux 上获取 getpid
getpid
当我使用-std=c++11标志时,我想使用标头 sys/types.h、unistd.h(C 风格)中的函数,但之后我有:
“函数 getpid 无法解析”。
是否有某种解决方法或等效功能?
@编辑:
我再检查一次,它不是标志错误
头文件
头文件
这很奇怪,因为我也在“干净”项目上进行了测试,完全没有问题。
主文件
看起来我无法从 unistd 获得任何功能,因为
也未解决
c - get_cwd() 从链接目录
我有一个程序来打印我从中获得的当前目录
效果很好。
但是,如何为链接目录执行此操作?
例如,我需要
而不是链接目录
那是,
与
我正在尝试扩展我的 C 技能,也许我缺少一些东西?
c++ - 为什么 execlp() 不将输出打印到终端?
我正在尝试将子进程的输出链接到父进程的输入;父进程将使用子进程的输出执行系统调用或命令。
我已经查看了以下主题的答案;但是,我并没有完全得到我正在寻找的答案。
我遇到的问题是父进程中的命令没有被打印到终端。
为什么不将输出打印到终端?我已经在父进程和子进程中关闭了管道的末端。此外,父母的 std_out 没有被修改。
这是我的代码。