由买买提看人间百态

topics

全部话题 - 话题: waitpid
(共0页)
z*y
发帖数: 1311
1
来自主题: Unix版 - [转载] waitpid 一问
【 以下文字转载自 Programming 讨论区 】
【 原文由 zyy 所发表 】
For programming experts, please check the following code.
pid = fork() ;
if (pid == 0) {
exec("error_prog") ;
}
else {
waitpid(pid, ....) ;
}
The child process executes "error_prog" which later generates SIGSEGV. The
signal can be caught by the parent. However, is it possible for the parent to
know the address of the instruction of the child program that generates the
fault? If so, how?
Thanks.
p******f
发帖数: 162
2
来自主题: Unix版 - System Environment variables in Perl
exec builtin -> exec(2)
system -> fork(2), exec(2) and waitpid(2)
qx or `` -> fork, exec, and waitpid
all of these will result in system calls, at least for *nix systems.
r*****n
发帖数: 4844
3
前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么
经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业
项目都看不出有什么实际作用,不如从工作中的需求出发)
建议:
不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至
少10年通用。
回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。
一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末
节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的
编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows
的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成
本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编
程革命史》
所以... 阅读全帖
l****q
发帖数: 177
4
来自主题: JobHunting版 - 一个thread如何kill另外一个thread?
楼上的概念没搞清楚
pthread_join in thread = waitpid in process
n******r
发帖数: 869
5
来自主题: JobHunting版 - 程序员技术练级攻略
贡献好文:
http://coolshell.cn/articles/4990.html
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to
those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉
我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,
于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来
了一些他的心得和经历,我在把他的心得做了不多的增改,并根据我的经历增加了“进
阶”一节。这是一篇由新手和我这个老家伙根据我们的经历完成的文章。
我的这个朋友把这篇文章取名叫Build Your Programming Technical Skills,我实在
不知道用中文怎么翻译,但我在写的过程中,我觉得这很像一个打网游做任务升级的一
个过程,所以取名叫“技术练级攻略”,题目有点大,呵呵,这个标题纯粹是为了好玩
。这里仅仅是在分享Mailper和我个人的学习经历。(注:省去了我作为一个初学者曾
经学习过的一些技术(今天明显... 阅读全帖
c****y
发帖数: 24
6
来自主题: Programming版 - About timeout in Socket Programming.
fork()吧,子进程可以用个SIGALRM处理函数来设置个标志;子进程的结束状态可以由
wait/waitpid得到。然后父进程就在loop B/C,子进程成功返回就直接break,否则继
续loop。

我在编一个peer-to-peer 的程序。
Computer A 收到用户输入后就broadcast 个request packet 寻求文件
。有文件的Computer B和 C都返回 response. Computer A选择并发confirm 给B,同
时打开server接受连接。B收到confirm后和A建立连接。
我要给request 和confirm设个timeout。如果request 没及时收到response,重传。否
则取消timeout; 如果A的confirm 没及时收到B的连接,A就给C发confirm让C和A建
立连接,如收到就取消timeout;
Question:
1. 如何设timeout哪?
a.select(). 可我在主程序已经把select()放在loop里接受stdio, request/respon
k********r
发帖数: 18
7
来自主题: Programming版 - About timeout in Socket Programming.
什么叫loop B/C?如果父进程wait/waitpid的话 我的理解就是停在那儿 (suspend)等
子进程执行完是吗?那别的进程都得等着?
B********s
发帖数: 3610
8
来自主题: Programming版 - Linux shell编程的问题
正在试着实现一般简单的linux shell,目前正在处理I/O redirection和pipeline,基本
的想法是,比如这样一个命令行: command1|command2|command3, 由shell fork一个子
进程,使用exec函数调用'command1'命令,然后command1进程再fork一个子进程来调用
command2,同时建立一个pipe用于command1和command2的通信, ...... 这样就形成了
一个链状的进程体系,主进程(shell)是祖先,并且通过 waitpid(pid, NULL, 0)函数
等待其他进程结束然后继续(pid是第一次fork的返回值)。现在的问题是,各个
command的执行顺序比较混乱,比如执行 ls|sort,输出的结果是正确的,但是主进程在
结果显示之前就已经继续运行把命令行提示符显示出来了。还有,如果执行ls|sort;
who ,则who的结果会先显示出来,和执行who;ls|sort的结果一样。
请大牛帮我找找原因吧,说得比较乱,还请见谅。
z***9
发帖数: 696
9
waitpid for chile process
b****r
发帖数: 161
10
来自主题: Programming版 - 问个fork cow的问题
一小段程序,根据fork的COW,parent的resident内存消耗是200M,child的resident在
更改s数组之前应该很小,但是实际上top输出两者resident是一样的:
Virt Res
18 0 0 0:00.19 0.1 199m 191m 780 S a.out

18 0 0 0:00.00 0.1 199m 191m 148 S a.out
Why? Linux 2.6
int main(int argc, char *argv[])
{
char *s = new char[200000000];
for (int i = 0; i < 200000000; i++) {
s[i] = '1';
}
pid_t pid = fork();
if (pid == 0) {
... 阅读全帖
f***c
发帖数: 281
11
来自主题: Unix版 - [转载] Re: freopen
【 以下文字转载自 Programming 讨论区 】
【 原文由 funsc 所发表 】
ok
the code is as follows:
while(1)
{
getcommand(args); //the function is to get a command line and works corrently
pid = fork();
if (pid == 0)
{
fd = freopen("a.txt", "w", stdout);
execvp(args[0], args);
}
else
{
waitpid(pid);
}
}
after i run ls -l > foo, the output has been written to a.txt, as i hoped,
but when i run ls again, the result does not show on screen.
it seems that after i redirect the stdout to the file "
w*****n
发帖数: 94
12

call time() after waitpid() in parent.
p****k
发帖数: 130
13
来自主题: Unix版 - [转载] waitpid 一问
If the child aborted after SIGSEGV, how about let the parent
launch gdb on the core (assume it is there) and do a little
analysis?:)
Seriously, is there any particular reason u want to get
the instruction address while the parent is running?
p******f
发帖数: 162
14
来自主题: Unix版 - 关于一个C++library的连接

check the manpage of system and waitpid for the explanation of error code.
i would suggest you try system("/my/program/A") or system("cd ...; ./A")
system function use /bin/sh, instead of your login shell, RTFM.
(共0页)