Waitpid返回-1,为什么?

时间:2016-06-23 17:02:38

标签: c++ linux

process.hpp

#define HPROCESS int
class Process {
    private:
        int exitCode;
        HPROCESS hProcess;
    public:
        static void waitEnd(Process* proc) {
            int w = waitpid(proc->hProcess, &(proc->exitCode), 0);
            Debug::debug(w);
        }
};

的main.cpp

int main() {
    Process* process = NULL;
    while(!process) {
        cout<<endl<<"Waiting for second process.\nPress any key";
        getchar();
        getchar();
        process = Process::takeExisting("process");
    }
    Process::waitEnd(process);
    cout<<endl<<"second process ended";
    cout<<endl<<endl;
    return 0;
}

我预料到:停止主要,等待进程,继续主要。它不等待进程,waitpid返回-1,为什么?

1 个答案:

答案 0 :(得分:1)

Waitpid仅适用于使用fork(),exec()启动的子进程。

在这种情况下,errno代码将在调用后为10,因为它是尝试在其他进程上使用waitpid,而不是子进程。

BTW这不能解决我的问题,但另一个问题是:Linux WaitForSingleObject?