GNU����ʤ���� ��äƤ��ޤ� xargs.
���ѥ��Ģ - xargs���ޥ�ɤ�Ȥäƻ��ꤷ�����ޥ�ɤ�����¹Ԥ��������ޤ��Τ��Ƥ��ʤ�����GNU��xargs���ޥ�ɤˤϡ�
�ץ������κ����������Ǥ��륪�ץ����Ȥ����Τ��Ѱդ���Ƥ��롣
�����Ȥäơ��ץ�����������¹Ԥ����Ƥߤ褦��
OS X��xargs(1)
��gnu�Ǥ���ʤ������͡�
�Ȥ����櫓��perl��¨���Ǻ�ä��Τ������顣
pargs#!/usr/local/bin/perl use strict; use warnings; use Getopt::Std; use POSIX ":sys_wait_h"; our $PPID = $$; our %Opt; getopts "P:v" => \%Opt; sub chld_handler{ while ((my $child = waitpid(-1,WNOHANG)) > 0) { warn "$child:$?" if $Opt{V}; forkit(); } $SIG{CHLD} = \&chld_handler; # still loathe sysV } $SIG{CHLD} = \&chld_handler; sub forkit{ my $line = <STDIN>; exit unless defined $line; chomp $line; my @args = split /\s+/, $line; my $pid = fork(); die "fork failed : $!" unless defined $pid; return $pid if $pid; # parent warn "$$: ", join(" ", @ARGV, @args), "\n" if $Opt{v}; unless(exec @ARGV, @args){ # kill parent if not executable kill INT => $PPID; } exit; } $Opt{P} ||= 1; $Opt{v} ||= $Opt{V}; @ARGV or die " $0 [-P number_of_processes ] command ..."; forkit() for (1..$Opt{P}); # 1st -P processes 1 while 1; # loop __END__
���Ƥ��̤ꡢ��äƤ��뤳�Ȥϼ¤�ñ��ǡ�-P
�ǻ��ꤷ�����������餫����fork()���ơ�SIGCHLD����������ٿ������ץ�������fork()������������-v
����ꤹ��ȡ������ͻҤ򸫤���褦�ˤ��Ƥ���ޤ����㤨�С�
http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.1.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.2.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.3.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.4.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.5.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.6.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.7.tar.gz http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.8.tar.gz
�ʤ�ƤΤ��Ѱդ��ơ�
% pargs -v -P4 lwp-download < url.lst > /dev/null
�Ȥ���ȡ�
3667: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.1.tar.gz 3668: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.2.tar.gz 3669: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.3.tar.gz 3670: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.4.tar.gz 3671: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.5.tar.gz 3672: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.6.tar.gz 3673: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.7.tar.gz 3674: lwp-download http://www.ring.gr.jp/pub/lang/perl/CPAN/src/perl-5.8.8.tar.gz
�ʤ�ƴ����ˤʤ�ޤ���
Enjoy!
Dan the Parallel Perl Monger
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���