#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
void handler1(int signum)
{
if(signum == SIGINT)
{
printf("我是父进程\n");
exit(0);
}
}
void handler2(int signum)
{
if(signum == SIGINT)
{
printf("我是子进程\n");
exit(0);
}
}
int main(int argc, const char *argv[])
{
pid_t pid=fork();
if(pid>0)
{
signal(SIGINT,handler1);
}
else
{
signal(SIGINT,handler2);
}
while(1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
void handler(int signum)
{
wait(0);
printf("子进程的资源已被回收\n");
}
int main(int argc, const char *argv[])
{
pid_t pid=fork();
if(pid>0)
{
printf("%d\n",getpid());
signal(SIGCHLD,handler);
}
else
{
int p=getpid();
printf("%d\n",p);
}
while(1);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;
void handler(int signum)
{
//wait(0);
printf("子进程的资源已被回收\n");
}
int main(int argc, const char *argv[])
{
for(int i=0;i<500;i++)
{
pid_t pid=fork();
if(pid>0)
{
printf("ppid=%d\n",getpid());
signal(SIGCHLD,handler);
wait(0);
}
else
{
int p=getpid();
printf("pid=%d\n",p);
kill(getpid(),SIGKILL);
sleep(2);
break;
}
}
while(1);
return 0;
}