社区
C语言
帖子详情
unix下的c程序下怎么监听某进程
angel518
2009-05-05 08:47:38
偶要在unix下开发个c程序AA,该程序先启动,并使其在后台运行,然后在同一终端窗口下启动新的程序BB,其中有个功能:要求AA程序能监听BB程序,如果BB程序退出,AA程序自动结束,问题是C程序中怎么实现获取某终端(即当前TTY下)运行某程序的进程号啊
能给点代码吗
...全文
86
6
打赏
收藏
unix下的c程序下怎么监听某进程
偶要在unix下开发个c程序AA,该程序先启动,并使其在后台运行,然后在同一终端窗口下启动新的程序BB,其中有个功能:要求AA程序能监听BB程序,如果BB程序退出,AA程序自动结束,问题是C程序中怎么实现获取某终端(即当前TTY下)运行某程序的进程号啊 能给点代码吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tian428
2009-05-06
打赏
举报
回复
这里有一个父进程捕获 SIGCHLD 信号的例子
http://www.linuxforum.net/books/upfaq/c665.htm
angel518
2009-05-06
打赏
举报
回复
偶还没有UNIX下开发的经验,没用过这些FORK等,那位能给点比较详细的代码,谢谢了啊
yingkundu
2009-05-06
打赏
举报
回复
这就是你想要的:
#include<unistd.h>
2 #include<sys/types.h>
3 #include<sys/wait.h>
4 #include<stdio.h>
5 #include<stdlib.h>
6
7 int main(void)
8 {
9 pid_t child;
10 int status;
11 if((child=fork())==-1)
12 {
13 perror("fork");
14 exit(EXIT_FAILURE);
15 }
16 else if(child==0)
17 {
18 puts("in child");
19 printf("\tchild pid =%d\n",getpid());
20 printf("\tchild ppid =%d\n",getppid());
21 exit(EXIT_SUCCESS);
22 }
23 else
24 {
25 waitpid(child,&status,0);//等待pid为child的子进程;status会保存子进程结束状态值;
26 puts("in parent");
27 printf("\tparent pid =%d\n",getpid());
28 printf("\tparent ppid =%d\n",getppid());
29 printf("\tchild exited with %d\n",status);
30 }
31 exit(EXIT_SUCCESS);
32
33 }
34
35 /*
36 waitpid()会暂停目前进程的执行,直到有信号来到或子进程结束。如果在调用waitpid()时子进程已经结束,则waitpid()会立即返回子进程结束状态值。子进程的结束状态值
由status返回,而子进程的进程识别码也会一块返回。
37
38
39 */
40
41
42
43 /*
44 运行结果:
45 in child
46 child pid =8426
47 child ppid =8425
48 in parent
49 parent pid =8425
50 parent ppid =8193
37,0-1 Top
猫已经找不回了
2009-05-05
打赏
举报
回复
[Quote=引用楼主 angel518 的帖子:]
偶要在unix下开发个c程序AA,该程序先启动,并使其在后台运行,然后在同一终端窗口下启动新的程序BB,其中有个功能:要求AA程序能监听BB程序,如果BB程序退出,AA程序自动结束,问题是C程序中怎么实现获取某终端(即当前TTY下)运行某程序的进程号啊
能给点代码吗
[/Quote]
很多办法,如果你fork,那自然wait就可以了。
或者你可以向办法获取BB进程的pid,然后再通过各种进程通信的的方式,在退出的时候通知AA也可以。
liliangbao
2009-05-05
打赏
举报
回复
up
mymtom
2009-05-05
打赏
举报
回复
fork exec waitpid
【C/C++】多
进程
:信号量的
监听
与处理函数
文章结构:wait()的阻塞问题signal()函数讲解示例代码wait()的阻塞问题 之前的多
进程
:父
进程
监听
子
进程
状态 wait()的使用文章中,父
进程
为了获取子
进程
的SIGSTOP、SIGTERM等信号时,由于调用了wait而导致主
进程
一直阻塞。在实际的开发中,主
进程
在等待子
进程
状态变化时还会有其它的事情要去执行,所以需要一种异步回调机制,让主
进程
可以在执行其它任务的时候,又可以
监听
到子进
5w字总结
Unix
系统编程学习笔记(面试向)(
Unix
环境高级编程/
Unix
环境
程序
设计)
文章目录一、计算C语言的数据表示与处理计算C语言的基本运算操作内存表和符号表类型转换函数类型的分析指令复合指令句法函数函数激活(Activation Record)函数激活定义函数激活存储内容二、并发多道
程序
设计和分时
Unix
分时:存储的保存和加载中断(interrupt)时钟中断( Clock Interrupt )系统调用(system call)
进程
切换(上下文切换)分时的实现应用层并发三、
程序
、
进程
和线程什么是
程序
?什么是
进程
?
进程
的状态有哪些?其转换关系是怎么样的?
进程
什么时候开始产生/运行?什么
linux下c如何启动
监听
,
unix
下用C如何调用111端口,或者说 如何让服务器自动启动一个
程序
?...
假设在
unix
下某目录有一个用C编译好的执行文件abc,运行时带一个年月参数,如abc200905,abc
程序
运行时会在屏幕显示一些信息。现在想实现这么个功能:局域网中任一台机器(xp系统),运行一个VC或BC开发的
程序
,该
程序
向服务器(
UNIX
系统)发出请求,服务器收到请求后可以自动启动
程序
abc,并且吧abc在屏幕上显示的内容传送到xp系统的机器上来显示。我注意到
unix
下有一个11...
C语言多
进程
写mysql_
Unix
C语言编写基于
进程
的小型并发服务器
并发介绍如果逻辑控制流在时间上是重叠的,那么它们就是并发的,可以出现在计算机系统的不同层面上,硬件异常处理
程序
、
进程
和
Unix
信号处理
程序
都是并发的。并发可以看作是操作系统内核用来运行多个应用
程序
的机制,但是并发不局限于内核。它也可以在应用
程序
中扮演角色。并发的主要作用有:访问慢速IO设备;与人交互的
程序
;通过推迟工作以降低延迟;服务多个网络客户端的请求。并发通常可以有三种,基于
进程
、基于IO多路...
python强制结束运行
监听
_python脚本如何
监听
终止
进程
行为,如何通过脚本名获取pid...
文章目录一、前言二、最初的想法:直接获取脚本中的变量值1、获取运行中py脚本的变量值2、换一种方式3、为什么不能获取脚本中的变量4、下下策,使用使用python的gdb调试工具三、python脚本
监听
终止
进程
行为1、python的signal模块以及atexit模块2、使用os.kill()退出
程序
3、脚本
监听
中止信号代码实例四、python通过脚本名获取pid1、通过脚本名称获取pid2、脚本内...
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章