为什么函数shmget(key_t,size_t,int)在Netbeans中返回-1但在终端上编译时它运行正常?

时间:2016-04-27 21:48:47

标签: c

#include <stdio.h>
#include <stdlib.h> /* to allow use of function: atoi() */
#include "process.h"
#include <string.h>

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/wait.h> 
#include <errno.h>
#include <stdint.h>

int  main(int  argc, char *argv[]) 
{
    size_t size;
    int ShmID;
    int *ShmPTR;
    pid_t pid;
    int status;

    if (argc != 5) 
    {
        printf("Use: %s #1 #2 #3 #4\n", argv[0]);
        exit(1);
    }

    ShmID = shmget(IPC_PRIVATE, 4*sizeof(int), IPC_CREAT|0666);
    if (ShmID < 0)
    {
        perror("shmget");
        printf("*** shmget error (server) ***\n");
        printf("\nPrint: %d",ShmID);
        printf("\nPrint: %d",errno);
        exit(1);
    }
    else
    {
        printf("%s","\nsuccess\n");
        printf("\n%d\n", ShmID);

    }

    return NOERRORS;
}

NetBeans中的输出:

  

shmget:函数未实现    * shmget错误(服务器)*

     

打印:-1

     

打印:88

     

RUN FAILED(退出值1,总时间:94ms)

当我通过putty在终端编译代码时,它正常运行,shmget()没有返回-1。 Netbeans中的perror()消息称&#34;功能未实现。&#34;是什么造成的?我刚刚重新安装了C编译器,Make,GDB和C ++编译器,但没有修复。

1 个答案:

答案 0 :(得分:0)

我设法找到了解决问题的方法。以下是一些可以轻松遵循的步骤:

  1. 从Cygwin Setup安装这4个软件包:
  2. libxcb-shm-devel:X Protoco C语言绑定(shm开发)

    libxcb-shm0:X Protoco C语言绑定(shm运行时)

    cygrunsrv:NT / W2k服务发起人

    cygrunsrv-debuginfo:cygrunsrv的调试信息

    1. 在NetBeans终端中运行此命令。只需将其复制并粘贴到那里:
    2. 的/ usr /斌/ cygserver-配置

      1. 按照要求您输入“是”的说明进行操作。