【问题标题】:Error: sys/wait.h: No such file or directory [duplicate]错误:sys/wait.h:没有这样的文件或目录[重复]
【发布时间】:2013-08-03 13:12:33
【问题描述】:

我正在尝试用 C 编写一个简单的 shell。但我不能使用 sys/wait.h。我的代码相同:

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main(void) {
    char command[BUFSIZ];
    int status;
    pid_t pid;

    for(;;) {
        printf("simpsh: ");
        if(fgets(command, sizeof(command), stdin) == NULL) {
        printf("\n");
        return 0;
   }

   command[strlen(command) - 1] = '\0';
   if((pid = fork()) == 0)
   execlp(command, command, 0);

   while(wait(&status) != pid)
   continue;

   printf("\n");
   }

}

我正在使用 dev-C++,结果是:

[Error] sys/wait.h: No such file or directory

这里有什么问题?如果有人对我用 C 或 C++ 创建一个简单的 shell 有什么建议,请给我一些链接或代码。谢谢!

【问题讨论】:

  • 嗯...您在包含路径之一的名为 sys 的子目录中是否有一个名为 wait.h 的文件?
  • windows下没有fork(),所以也没有wait()。为了更好地兼容 *IX,您可能希望切换到使用提供 gcc 的 Cygwin 环境。另请参阅此答案:stackoverflow.com/a/7841250/694576
  • 对不起,我以为它是 C/C++ 库?
  • @alk: 在 windows 中它和 WaitForSingleObject() 一样吗?
  • 你走错路了!即使您要编译此代码,链接器也会抱怨fork()wait() 的(实现)丢失。

标签: c++ c windows shell


【解决方案1】:

来自http://sourceforge.net/p/dev-cpp/discussion/48211/thread/e32720b4

TextTiling/util.c:8:22: sys/wait.h: 没有这样的文件或目录 TextTiling/util.c:26:21: sys/vfs.h: 没有这样的文件或目录

这些是特定于操作系统的文件,但不是 Windows 标头。 Windows 不完全支持 POSIX API。您可能需要对代码进行一些移植才能使其在 Windows 上编译和运行。

您可能会更幸运地在预期的环境中构建它(Linux 或 OSX 可能,无论是类 UNIX 环境)。您也许可以在 Cygwin 下构建它,但这是一个大锤。

一个简单的(ish)解决方案是在虚拟机下运行 Linux(例如使用 VMWare 的免费 VMPlayer 或 VMServer 工具)。然后在 VM 中构建和运行代码。 VM 可以通过虚拟网络访问 Windows 机器,因此您仍然可以根据需要将结果和数据导入 Windows 环境。

在另一个问题上,当项目位于其安装目录 (C:\Dev-Cpp) 的子文件夹中时,Dev-C++ 有时会(并且显然是随机地)失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 2016-06-19
    • 2019-03-07
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多