小编cha*_*one的帖子

声明一系列空洞

我正在编写一个复制文件的程序.我使用了一个缓冲区来存储read()函数提供的信息,然后将这些数据提供给write()函数.我用过这个宣言:

static void buffer[BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)

问题是我得到了错误error: declaration of ‘buffer’ as array of voids.

我不明白为什么声明一个void数组是一个错误.如何在没有特定类型的情况下声明内存块?

c memory

4
推荐指数
2
解决办法
5038
查看次数

如何以编程方式获取正在侦听某个端口的进程的pid?

我必须编写一个SNMP模块来监视我写过的某个服务器应用程序.问题是我必须知道这个应用程序是否正在运行,我应该能够随时杀死它.

我知道应用程序正在侦听的端口(读取应用程序配置文件),我可以尝试将此端口绑定到套接字,以便知道我的应用程序或其他应用程序是否(或不是)正在使用它对于我的模块.这是代码:

int
get_server_status()
{
        struct sockaddr_in local;
        int port,sockfd;

        if (parse_config_file(&port,NULL,CONFIG_FILE_PATH) == -1)
                return -1; //Error

        if ((sockfd = socket ( AF_INET, SOCK_STREAM, 0 )) < 0)
                return -1; //Error

        local.sin_family = AF_INET;
        local.sin_port = htons ( port );
        local.sin_addr.s_addr = inet_addr ("127.0.0.1");

        if (bind(sockfd, (struct sockaddr *) &local, sizeof (local) ) < 0 ){
                if(errno == EADDRINUSE)
                        return 1; //Port being used
                else
                        return -1; //Error
        }else{
                close(sockfd);
                return 0;         //Port not being used

        }
}
Run Code Online (Sandbox Code Playgroud)

问题出现在我需要杀死应用程序时,我既不知道它PID …

c port pid

3
推荐指数
1
解决办法
3642
查看次数

标签 统计

c ×2

memory ×1

pid ×1

port ×1