我正在编写一个复制文件的程序.我使用了一个缓冲区来存储read()函数提供的信息,然后将这些数据提供给write()函数.我用过这个宣言:
static void buffer[BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)
问题是我得到了错误error: declaration of ‘buffer’ as array of voids.
我不明白为什么声明一个void数组是一个错误.如何在没有特定类型的情况下声明内存块?
我必须编写一个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 …