Cygwin,编译和运行C程序时make的错误“无法获得proc锁定”

时间:2016-01-13 11:27:27

标签: windows makefile cygwin ncurses

问题

我有一些半年历史的c程序,我正在努力,并希望我现在可以继续研究它们。我之后就安装了Windows 10(64位),所以我觉得这可能是一个问题但是程序已经在Windows 10上运行了。

大约2个月前,我可以使用make文件构建并运行可执行文件但是当我今天再次尝试时,在我看来,可执行文件似乎没有运行。我现在也尝试更新cygwin和(我认为)所有相关的软件包。

如果对cygwin有任何重大更改,我已经使用Google搜索但我没有找到任何内容。

详细

当我尝试运行任何程序时,在./executeables/helloworld.exe行很长一段时间没有发生任何事情,然后最终产生错误:

$ make 1
gcc 1-helloworld.c -o ./executeables/helloworld.exe -lncurses
./executeables/helloworld.exe
      0 [sig] make 7332 get_proc_lock: Couldn't acquire sync_proc_subproc for(5, 1), last 7, Win32 error 0
   1324 [sig] make 7332 proc_subproc: couldn't get proc lock. what 5, val 1

在此之后,没有任何反应,我甚至无法使用ctrl+C停止进程,因此我必须使用任务管理器结束“make.exe”(奇怪的是,包含2个进程)。然后终端只说

makefile:2: recipe for target '1' failed
make: *** [1] Error 1

所以我猜测从Windows创建进程获取互斥锁或锁是一个问题,但我不知道为什么会发生这种情况。

代码

此尝试中的示例将此代码用于hello world程序,但对于更复杂的程序也是如此。

#include <ncurses.h>
#include <string.h>

int main() {
    char *message="Hello World";
    int row,col;
    int len = strlen(message);

    initscr();

    getmaxyx(stdscr, row, col);                  //screensize
    mvprintw(row/2, (col-len)/2, "%s", message); //center of screen
    getch();

    refresh();
    endwin();

    return 0;
}

以前有人见过这个问题吗?

1 个答案:

答案 0 :(得分:3)

Avast防病毒阻止程序正常运行。禁用它使一切运行完美。我终于在这个帖子中找到了答案:

Netbeans 8.1 IDE compiles and builds C programs but does not show their output

注意: 由于它没有被标记为该线程中问题的答案,并且因为该问题没有明确地集中相同的错误(尽管出现相同的错误),我将保留我的问题,而不是将其标记为重复。

谢谢Sheshadri Iyengar提供解决方案。