在c ++中使用wait()和fork()时出错

MOH*_*MED 3 c c++ fork wait

我正在尝试使用wait()fork()我的c ++代码.但是我在编译阶段遇到以下错误

../test/my_test.cpp: In member function 'void MYClass::myMethod()':
../test/my_test.cpp:98: error: no matching function for call to 'wait::wait(int*)'
/data/backfire/staging_dir/toolchain-i386_gcc-4.1.2_uClibc-0.9.30.1/lib/gcc/i486-openwrt-linux-uclibc/4.1.2/../../../../i486-openwrt-linux-uclibc/sys-include/bits/waitstatus.h:68: note: candidates are: wait::wait()
/data/backfire/staging_dir/toolchain-i386_gcc-4.1.2_uClibc-0.9.30.1/lib/gcc/i486-openwrt-linux-uclibc/4.1.2/../../../../i486-openwrt-linux-uclibc/sys-include/bits/waitstatus.h:68: note:                 wait::wait(const wait&)
Run Code Online (Sandbox Code Playgroud)

码:

void MYClass::myMethod()
{
    pid_t pid;
    int status;
    if ((pid = fork()) < 0) {
       printf("error fork\n");
       return;
    }
    if (pid == 0) {
        /* cild*/
        ......
    }
    /*parent*/
    while (wait(&status) != pid);
}
Run Code Online (Sandbox Code Playgroud)

如何修复错误?

Mik*_*our 7

该错误表明它正在尝试创建一个被调用类型的对象wait,从指针转换,而不是(如预期的那样)尝试调用一个被调用的函数wait.

问题是您没有包含声明该wait函数的标头.但是,有一个wait在另一个头中定义的类型,因此,如果没有函数声明,编译器会假定您的意思.

解决方案,来自联机帮助页wait(2):

#include <sys/types.h>
#include <sys/wait.h>
Run Code Online (Sandbox Code Playgroud)