我正在开发一个关于共享内存和子进程与父进程之间管道的类的项目,并希望了解我遇到的一些问题,以便我可以自己修复代码并了解有关项目。
我发现代码here由'WhozCraig'提供,它演示了子进程和父进程之间管道的简单用法,以发送和接收整数。
我是否将其保存为'test.c'并将其编译为:
gcc test.c
没有问题。代码编译并运行得很好并打印出它应该的内容。
对于我的项目,我的代码必须使用特殊的标志和选项进行编译。如果我尝试编译代码'WhozCraig'这么好写了,它编译就好了一点编辑(删除声明但未使用的命令行参数,包括wait()
的头文件不是隐含地宣布)。
然而,当我运行代码时,没有任何内容打印。
以下是我必须编译代码的方法,以及如何编译示例代码(导致无打印输出的问题):
gcc -std=c99 -Wall -Wextra -D_XOPEN_SOURCE=700 -o test test.c -lrt
我想了解更多关于我们给gcc的标志,看看为什么我的主程序和这个示例代码都无法使用它。
特别是我不确定标志D_XOPEN_SOURCE=700
的作用。
我知道-Wall
和-Wextra
打印出更多警告消息,-lrt
用于确保共享内存工作正常但是,只是对该中间位感到困惑,尽管对其他标志的任何额外洞察将会如果它与我的问题有关,肯定会受到赞赏。