- 论坛徽章:
- 0
|
回复 1# lzx4456
给你改成 父进程给子进程发信号了,可以用,你看看, 你父子对发如果不是多线程去写的容易赶在某个窗口临界区卡壳的。- #include <stdio.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <signal.h>
- int ntimes = 0;
- //void p_action(int sig), c_action(int sig);
- int main()
- {
- int pid, ppid;
- void p_action(int sig), c_action(int sig);
- // signal(SIGUSR1, p_action);
- switch(pid=fork())
- {
- case -1:
- printf("-1 error\n");
- perror("create process failed!\n");
- break;
- // exit(1);
- case 0:
- signal(SIGUSR1, c_action);
- printf("child process %d\n", getpid());
- for(;;)
- {
- sleep(1);
- }
- break;
- default:
- printf("pid %d, the child id %d\n", getpid(), pid);
- for( ; ; )
- {
- sleep(1);
- kill(pid, SIGUSR1);
- printf("send SIGUSR1 to child\n");
- }
- }
- // return 1;
- }
- void c_action(int sig)
- {
- printf("arent get SIGUSR1 %d times\n", ++ntimes);
- }
复制代码 |
|