【发布时间】:2018-02-28 10:56:47
【问题描述】:
我正在用 C 语言编写以下代码。我正在编写一个使用fork 系统调用创建新进程的程序。然后我想检查哪个是活动的,最后如果它是子进程返回该文件中所有目录的列表,或者它是否是父进程等待子进程终止。
以下是我的代码:
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <iostream>
int main(){
int pid = fork();
if(pid < 0){
printf(stderr, "Fork call failed! \n");
}
else if(pid == 0){
printf("This process is the child from fork=%d\n", pid);
printf("Thecurrent file inside the directory are:\n");
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d) {
while ((dir = readdir(d)) != NULL) {
printf("%s\n", dir->d_name);
}
closedir(d);
}
exit(0);
}
else{
printf("This process is the parent from fork=%d\n", pid);
int stats;
//parent process waits for child to terminate
waitpid(pid, &stats, 0);
if(stats == 0){
printf("This process is terminated.");
}
if(stats == 1){
printf("This process is terminated and an error has occured.");
}
}
return 0;
}
fatal error: iostream: No such file or directory #include <iostream>
^ compilation terminated.
如果我删除 #include <iostream>,我会得到:
/usr/include/stdio.h:362:12: note: expected ‘const char * __restrict__’ but argument is of type ‘struct _IO_FILE *’
我该如何解决这个问题?
【问题讨论】:
-
用C++库用C写?
-
很抱歉,我在这里使用 C++ 库犯了这个错误吗?
-
iostream在 C 中不存在 -
@FedericoklezCulloca 我明白了,好的,我将删除它,但我如何确保不会发生下一个错误?
-
你是如何编译这个的?你没说。
标签: c linux compilation fork