【问题标题】:Where do the spawn() functions (declared in "spawn.h") come from?spawn() 函数(在“spawn.h”中声明)从何而来?
【发布时间】:2012-08-21 21:39:41
【问题描述】:

我无法编译这个简单的程序

#include<stdio.h>
#include<conio.h>
#include<spawn.h>
#include<process.h>

int main(){
    printf("Spawning new process...\n");
    spawnl(P_WAIT,"curl","www.google.co.in",NULL);
    system("cls");
    printf("Program execution completed somehow!\n");
    getch();
    return 0;
}

我尝试过使用以下命令:

g++ filename.cpp -l -o filename.cpp

结果:ld.exe cannot find -l exit with status 1

g++ filename.cpp -o filename

结果:error: spawn.h No such file or directory.

我的 MinGW 安装有问题吗?我正在使用 Windows 7 32 位和 MinGW。

【问题讨论】:

  • 为什么不使用 std::cout 而不是 printf()?
  • 什么是(它来自哪里)spawn/spwan.h?它当然不是标准的 C++。 Otoh,您的程序中似乎没有任何迹象表明它是 C++,所以您确定您想要 C++ 答案而不是 C 答案吗?
  • @pst:IDK。我一直在搜索它。它不在我的系统上,我下载了这个和其他一些相关的 .h 文件,但是其他一些错误不断出现。所以我也删除了它们。我是 Windows 用户,发现在编译时很难管理这个库的东西。我需要下载一些库吗?
  • @R.M. :R M。 : 过去几个月一直在用 C 编码,然后决定只为这个特定的程序使用 C++,因为我喜欢类的概念。所以现在大部分程序都是用C写的,除了使用C++的一些特性
  • @PlasmaHH:更改了标签。我自己试图弄清楚哪个库包含这个,无论它是否在我的系统上。我习惯于用 Java 编写代码,一切似乎都在一个地方。现在,我使用的每个函数都使用了这个库——pthread、spawn 和类似的函数,让我看起来像个傻瓜。

标签: c spawn


【解决方案1】:

spawn.h 不是标准的 C/C++ 标头。 POSIX 定义了一个非标准的&lt;spawn.h&gt; 标头,但它没有定义spawnl 函数,而且Windows 无论如何也不是一个符合POSIX 的系统。

Windows 确实在&lt;process.h&gt; 中定义了_spawnl 函数,因此最简单的做法是删除包含&lt;spawn.h&gt; 并改用它。您还可以重写代码以使用 Windows 函数CreateProcess

【讨论】:

  • POSIX 生成函数都以posix_ 开头,因此代码不能使用POSIX &lt;spawn.h&gt;&lt;conio.h&gt;&lt;process.h&gt; 都不是 POSIX 标头。
  • 意思是安装 Cygwin,并在那里编译。我以某种方式编译的程序会在没有 Cygwin 的 Windows 系统上运行吗?
  • en.wikipedia.org/wiki/Spawn_(computing) 有人给了我这个链接。我有什么问题吗?
  • @vish213:该链接基本上是正确的,只是函数已重命名为具有前导下划线。这篇文章没有提到任何名为 &lt;spawn.h&gt; 的标题,除了提到提到不同 POSIX 函数的文章。
猜你喜欢
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多