由买买提看人间百态

topics

全部话题 - 话题: pclose
(共0页)
r****t
发帖数: 10904
1
manpage says pclose will wait for the other side to terminate, so the when
the other side quits, pclose will return.
w******1
发帖数: 520
2
来自主题: JobHunting版 - 问道OS的面试题。
GOOGLE 出来的:
fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父
进程, 具有良好的并发性,但是二者之间的通讯需要通过专门的通讯机制,如:pipe
,popen&pclose、协同进程、fifo,System V IPC(消息队列、信号量和共享内存)机
制等, 另外通过fork创建子进程系统开销很大,需要将上面描述的每种资源都复制一
个副本。这样看来,fork是一个 开销十分大的系统调用,这些开销并不是所有的情况
下都是必须的,比如某进程fork出一个子进程后,其子进程仅仅是为了调用exec执行另
一个执行文件,那么在fork过程中对于虚存空间的复制将是一个多余的过程(由 于
Linux中是采取了copy-on-write技术,所以这一步骤的所做的工作只是虚存管理部分的
复制以及页表的创建 ,而并没有包括物理也面的拷贝);
vfork系统调用不同于fork,用vfork创建的子进程共享地址空间,也就是说子进程完全
运行在父进程的地址空间上,子进程对虚拟地址空间任何数据的修改同样为父进程所见
。但是用 vfork创建子进程后,父进程会被阻塞直到子进
w*s
发帖数: 7227
3
hi we have complicated multithread code, as most companies do.
Now under stress test we have broken pipe.
How to debug this pls ?
Q1:
if in the popen, pclose case,
http://www.crasseux.com/books/ctutorial/Programming-with-pipes.
if 1 thread is exiting, it can check all opening pipes associating with it,
can it ?
if pipes still open, then wait till the other side finishes,
then exit this thread gracefully
Can this work ?
Q2:
if someone uses pipe();
http://linuxprograms.wordpress.com/2008/02/15/usi... 阅读全帖
t****t
发帖数: 6806
4
FILE* fp=popen("gzip -cd foo.gz", "r");
/* ... */
pclose(fp);
where do you think perl's pipe form open come from? :)
w*s
发帖数: 7227
5
【 以下文字转载自 Linux 讨论区 】
发信人: wds (净洗前尘,从头再来), 信区: Linux
标 题: How to debug "broken pipe" in linux programming ?
发信站: BBS 未名空间站 (Wed Dec 21 20:34:08 2011, 美东)
hi we have complicated multithread code, as most companies do.
Now under stress test we have broken pipe.
How to debug this pls ?
Q1:
if in the popen, pclose case,
http://www.crasseux.com/books/ctutorial/Programming-with-pipes.
if 1 thread is exiting, it can check all opening pipes associating with it,
can it ?
if pipes still open, then wait ... 阅读全帖
n*******r
发帖数: 60
6
来自主题: Unix版 - Help Bus error
I put a group of Popen command before a function, it is fine.
However, when I put it into a function, it showed always Bus Error
The following is the code
if ((ptr = popen(cmd, "r")) != NULL
{
while (fgets(bufPS, 40, ptr) != NULL)
{
(void) printf("%s", bufPS);
(void) strcat(bufPine,bufPS);
}
pclose(ptr);
}
Help me please!!!
a**a
发帖数: 203
7
来自主题: Unix版 - Cygwin问题请教
有没有大虾在Cygwin底下编C程序的.
我们的一个程序包,想作Cygwin底下的support.可是里面用到
pclose()函数的时候,程序就会有问题.不知道有没有大虾有类似
经验.
Any kind of suggestion or ideas would be appreciated!
谢谢.
a**a
发帖数: 203
8
【 以下文字转载自 Programming 讨论区 】
【 原文由 ahwa 所发表 】
问题找到了, 是pclose()在Cygwin底下不能同时打开两个pipe.
下面有两个程序,test_prog.c运行时就死在那里了. test_prog2.c运行
就无错. 请问有什么办法可以解决吗,在不改原程序包的情况下. Thank
you for any comments or suggestions.
(共0页)