我用C语言编写了这个基本的forking程序。但编译器发出错误。代码是
Position[x >= 7, x]
错误是
Error in Position[x >= 7, x] :
object of type 'closure' is not subsettable
答案 0 :(得分:2)
您正在使用Windows,看起来您无法在Windows上执行此操作。以下是一些相关的帖子:
这是搜索你的错误时的前三个链接:未定义的引用`fork'
答案 1 :(得分:1)
你错过了一个图书馆:
将其添加到代码顶部
#include <sys/types.h>
答案 2 :(得分:1)
统一我到目前为止看到的最佳答案(不一定是最受欢迎的):
fork
manual, you're missing the <unistd.h>
header include(and <sys/types>
, depending on the POSIX standard you use)。请注意,当针对POSIX兼容的操作系统时,这是程序中的错误,这让我想到了下一点:fork
的POSIX兼容操作系统,当然......并且Windows不是其中之一。请注意,这不是程序中的错误; 选择操作系统时出错。我在程序中发现了另一个错误。 %d
告诉printf
打印int
类型的参数,但您提供的实际类型为pid_t
。根据{{3}}(我强烈建议阅读并完全理解多次以编写更好的代码;您将学习很多),&#34;如果有任何论证对于相应的转换规范,它不是正确的类型,行为是未定义的。&#34;您需要显式转换。例如:
printf("From child process with process id %d\n", (int) getpid());
printf("Parent Process with id %d\n", (int) getpid());
printf("Parent spawned process %d\n", (int) pid);
转换为int
本身就是一个错误;根据{{3}},符合POSIX的实现&#34;应支持一个或多个编程环境,其宽度为blksize_t
,pid_t
,size_t
,{{1 },ssize_t
和suseconds_t
不大于useconds_t
类型的宽度。&#34;在这样的环境中,转换为long
并使用相应的long
(顺便说一下, ell )指令会更合适:
%ld