【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

MinGWでwaitpid()とkill()

MinGWUNIXのプログラムをビルドしていると、waitpid()やkill()でよく引っ掛かります。とりあえずコンパイルを通すため、代わりの関数を実装してみました。

※ サポートできない引数は無視しています。

#include <windows.h>
#include <process.h>

int waitpid(pid_t pid, int *stat_loc, int options) {
    return _cwait(stat_loc, pid, WAIT_CHILD);
}

int kill(pid_t pid, int sig) {
    int ret;
    HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
    ret = TerminateProcess(h, 0) ? 0 : -1;
    CloseHandle(h);
    return ret;
}