linux中的信号量机制
来源:互联网 发布:中国农业大学网络管理 编辑:程序博客网 时间:2024/05/17 23:49
1 #include<stdio.h>
2 #include<sys/wait.h>
3 #include<sys/types.h>
4 #include<unistd.h>
5 #include<errno.h>
6 #include<signal.h>
7 int main()
8 {
9 pid_t pid=fork();
10 int ret;
11 if(pid<0)
12 perror("fork");
13 if(pid==0)
14 {
15 puts("in chile process");
16 printf("111111111111");
17 printf("222222222222");
18 printf("333333333333");
19 raise(SIGSTOP);
20 return(0);
21 }
22 else
23 {
24 printf("create pid=%d",pid);
25
26 if(waitpid(pid,NULL,WNOHANG)==0)
27 {
28 if(ret=kill(pid,SIGKILL)==0)
29 printf("kill's return is:%d,pid =%d\n",ret,p id);
30 else
31 perror("kill failed");
32
33 }
34 }
35 return 0;
2 #include<sys/wait.h>
3 #include<sys/types.h>
4 #include<unistd.h>
5 #include<errno.h>
6 #include<signal.h>
7 int main()
8 {
9 pid_t pid=fork();
10 int ret;
11 if(pid<0)
12 perror("fork");
13 if(pid==0)
14 {
15 puts("in chile process");
16 printf("111111111111");
17 printf("222222222222");
18 printf("333333333333");
19 raise(SIGSTOP);
20 return(0);
21 }
22 else
23 {
24 printf("create pid=%d",pid);
25
26 if(waitpid(pid,NULL,WNOHANG)==0)
27 {
28 if(ret=kill(pid,SIGKILL)==0)
29 printf("kill's return is:%d,pid =%d\n",ret,p id);
30 else
31 perror("kill failed");
32
33 }
34 }
35 return 0;
36 }
这个代码在开始时
15 puts("in chile process");
16 printf("111111111111");
17 printf("222222222222");
18 printf("333333333333");
完全无法输出
后发现是因为这些函数还没有被调用,就已经被父进程杀死了。
接着我在
26 if(waitpid(pid,NULL,WNOHANG)==0)
前加入了sleep(3);
此时,可以实现 puts("in chile process");
但printf函数功能仍未实现。
后来通过网上查找资料http://www.360doc.com/content/09/0315/10/26398_2812414.shtml
发现内核创建的用户进程不能printf不能输出
0 0
- linux中的信号量机制
- 进程中的信号量机制
- Linux信号量机制
- linux信号量机制
- Linux 信号量机制
- Linux 同步机制:信号量
- [Linux]信号量机制
- Linux信号量机制
- linux中的信号量详解
- linux中的信号量操作
- linux中的信号量
- Linux中的信号量
- Linux内核中的信号量
- linux信号量机制(semaphore)
- Linux信号量机制及编程
- linux信号量机制(semaphore)
- linux编程---信号量通信机制
- 信号量在Linux中的实现
- 乘法口诀
- java的File测试代码
- 1234 开门人和关门人
- Java中的多线程
- 求区间[a,b]之间的大数据的回文数个数解题报告
- linux中的信号量机制
- 用队列打印杨辉三角
- smarty学习浅析与笔记
- android 使用include 调用内部组件
- 想学编程语言接外包,懂行的 人指点了几句 写出来给大家参考下
- LeetCode::Reverse Linked List II
- struts2+spring4+hibernate4整合时 org.hibernate.service.jta.platform.spi.JtaPlatform 异常
- ul ol li标签
- dwr学习(二)