我有一个客户端和一个服务器程序,但是问题是我首先运行./server,而不是使用服务器程序创建的pid运行./client,我如何自动执行此操作?server.c
void my_handler(int signum){
if (signum == SIGINT){
printf("Received SIGINT!\n");
printf("haiku_category: japanese\n");
}
if (signum == SIGQUIT){
printf("Received SIGQUIT!\n");
printf("haiku_category: western\n");
}
}
int main(int argc, char *argv[]){
int pid;
pid=getpid();
printf("PID: %d\n", pid);
signal(SIGINT, my_handler);
signal(SIGQUIT, my_handler);
pause();
}
和client.c
int main(int argc, char *argv[]){
srand(time(0));
for(int i=0;i<100;i++){
int random_int = rand()%2;
printf("random_int: %d\n",random_int);
if(random_int==0) kill(atol(argv[1]),SIGINT);
else kill(atol(argv[1]),SIGQUIT);
}
}
您有很多方法可以做,但是首先要确定要知道是否可以在同一台计算机上同时运行多个服务器和客户端,如果可以,则不可能使用文件,因为所有服务器/客户端将使用相同的端口来写不同的pid,因为套接字将使用相同的端口,所以无法使用套接字,等等。一种方法是让客户端由服务器启动,如果客户端无法获取其父pid,服务器可以将其pid作为参数提供给客户端