【发布时间】: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()的(实现)丢失。