ChinaUnix.net
相关文章推荐:

perl IPC fork 锁

#include int fcntl(int fd, int cmd, ... /* struct flock *arg */); struct flock { short l_type; //F_RDLCK, F_WRLCK, F_UNLCK short l_whence; //SEEK_SET, SEEK_CUR, SEEK_END off_t l_start; //relative starting offset in bytes off_t l_len; //#bytes, 0 means until end-f-file off_t l_pid; //PID returned by F_GETLK }; 命令有如下三个: F_SETLK 加...

by rwen2012 - Linux文档专区 - 2006-04-03 21:06:41 阅读(839) 回复(0)

相关讨论

perl使用fork进行多进程工作时,我现在遇到一个问题,主程序在wait()的时候,只能退出部分子进程,假设fork了2个子进程,只有1个能退出。 子进程在退出的时候,释放系统资源是否必须有一定的限制?比如:关闭文件的句柄,销毁模块的对象等等,我现在主程序不能等待所有的子进程退出,一直就挂在那里。 子进程的代码应该做怎样的检查?? 谢谢!

by Perl小手 - Perl - 2003-03-29 10:38:35 阅读(8020) 回复(3)

刚把信号量同步的超时勉强实现了,现在在写文件的操作,看man和资料都说当cmd为F_SETLKW时,fcntl可以被信号中断,但是我写了下面这个函数,运行时"alarm fire"打印出来了,证明SIGALRM已经捕抓到,但是fcntl函数居然没有立刻返回-1,还是堵塞到其他进程释放为止。为什么呢?难道我又犯什么低级错误了? [code] static int gnAlarmBreak = 0; void AlarmHandler(int sig) { gnAlarmBreak = 1; printf("alarm fire\n"...

by flyingbear - C/C++ - 2003-11-07 09:29:01 阅读(1354) 回复(2)

本帖最后由 picbhan 于 2013-03-19 09:28 编辑 最近测试perl fork函数能产生子进程的最大数目和子进程自动收割,结果发现貌似如果是fork失败了的话,就没法继续fork了,无论你是否在第一个失败的fork后把所有子进程都收割。也就是说,无论你还有没有子进程在运行,只要fork失败了,就无法恢复fork了,不知道有没有人想到办法解决这个问题? 代码贴出来,高手看看吧!求解[code]#!/usr/bin/env perl use strict; use warnings; ...

by picbhan - Perl - 2013-03-28 17:30:44 阅读(4156) 回复(12)

求助,我是perl新手,忘各位不吝赐教! 请看下面这个简单的函数 sub system_nb { my (@cmd) = @_; #假设@_ 是"testcase/uboot_reset_test.exp /home/glasswm/atestout/111/logs/20091020-02/atest.autoconfig" if(my $pid = fork) { #请问此处的fork会带什么默认的隐藏参数吗? #1 waitpid($pid, 0); return $?; } else { #2 die "cannot fork: $...

by glasswm - Perl - 2009-10-21 22:36:55 阅读(2338) 回复(12)

最近用perl程序在服务器上处理大批量数据,但是总是报同一个错误,很不解。求高手指点。 本人用perl同时处理几十个文件,因此对每个文件fork一个人子进程处理,但在fork之前会预处理生成这些文件,也就是说整个程序主要分为两部分:主程序预处理和fork单独处理每个文件。 主程序预处理过程中会占用10-50G的内存,依预处理的文件大小而定,但预处理完后全部写入单独的文件中,不再占用内存。接下来在for循环中调用fork,但是问题就出...

by picbhan - Perl - 2013-02-07 09:59:16 阅读(4457) 回复(14)

2003的ipc$不能删除了吗?

by sbt709394 - 企业网管技术交流区 - 2006-03-23 18:27:46 阅读(2860) 回复(3)

名称perlipcperl的进程间通讯(信号、fifos、管道、安全子进程、套接字与信号量) 描述perl的基本的进程间通讯方法有旧式UNIX信号、命名管道、打开的管道、伯克利套接字以及SysV ipc调用。每一种都在不同的情形下有各自的应用。 信号perl使用一种简单的信号处理机制:哈希%SIG包含了信号的名字和用户安装的信号处理句柄。这些句柄将带着触发它的信号的名字为参数被调用。一 个信号可能通常地从其它进程发送过来的一串键盘序列(...

by gunguymadman - Perl - 2010-05-07 23:14:12 阅读(3452) 回复(6)

我有200个ip,然后在fork以后,父进程接受前100个ip,然后子进程接受后100个ip 。然后对任一进程我都使用AnyEvent+AnyEvent::Ping去Ping这100个ip,结果运行时,各种报错啊。。 难道AnyEvent::Ping+AnyEvent不能用于多进程fork或者多线程中threads ?

by bio_tt - Perl - 2013-01-09 15:51:25 阅读(1230) 回复(4)

一段码如下: $ret = fork(); if( $ret == 0 ) { sleep(2); print "child exit -1\n"; exit (-1); } elsif( defined $ret ) { $pid = wait( ); print "child pid is $pid\n"; } else { print "fork error :$!\n"; } 在父进程中如何能得到子进程返回的值(-1)? 在c里wait的原形是wait( int * state )可得到返回值。 谢谢!

by ibmxp - Perl - 2005-04-28 11:07:55 阅读(1219) 回复(1)

int glob_tmp = 6; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void) { int var; /* automatic variable on the stack */ pid_t pid; var = 88; if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1) err_sys("write error"); printf("before fork\n"); /* we don't flush stdout */ if ( (pid = fork()) printf("pid = %d, glob = %d, var = %d\n", g...

by leo1983 - BSD文档中心 - 2009-07-13 13:59:34 阅读(1508) 回复(0)