zsh-users
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.stephenson@samsung.com>
To: zsh-user <zsh-users@zsh.org>
Subject: Re: question about zargs
Date: Wed, 31 Oct 2012 14:25:46 +0000	[thread overview]
Message-ID: <20121031142546.529e1709@pwslap01u.europe.root.pri> (raw)
In-Reply-To: <20121031134007.GA9731@localhost.localdomain>

On Wed, 31 Oct 2012 21:40:07 +0800
Han Pingtian <hanpt@linux.vnet.ibm.com> wrote:
> I just learnt that there is a function 'zargs' which just like
> 'xargs'. So why we need the 'zargs' as we have 'xargs' already? 
> 
> As a example, this works just fine with 'xargs':
> 
>     % print -N **/* | xargs -n1 -0 ls

It works, but with more processes.  zargs allows you to have things
(though not ls) running completely in the shell.  In that case, you
aren't sensitive to the size of the argument list passed to an external
process.

> But this one will cause "(eval):2: fork failed: cannot allocate
> memory" error on my laptop:
> 
>     % zargs **/* -- ls

ls is run as an external process, so the argument list is limited.
zargs doesn't have a builtin system-dependent limit to the number it'll
pass in one go, unlike xargs, as far as I can see, so needs to be told
how to limit it.

Hmm... in principle, you can do:

zargs -n2 **/* -- ls

so that it executes ls and one additional argument each time.  This is
equivalent to the -n1 you gave to xargs.

However, with a lot of iles this is running incredibly slowly for me and
after a few dozen files have been processed I hit:

279: mem.c:1180: MEM: allocation error at sbrk, size 589824.
zargs:279: fatal error: out of memory

(Luckily this is in a subshell.)

It looks like this is hitting some pathology in memory management to do
with the argument array (which is being shifted at that line).

pws


  reply	other threads:[~2012-10-31 14:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-31 13:40 Han Pingtian
2012-10-31 14:25 ` Peter Stephenson [this message]
2012-10-31 16:30   ` Bart Schaefer
2012-10-31 22:32     ` Han Pingtian
2012-11-01  0:10       ` delete key :( Ray Andrews
2012-11-01 12:54         ` Peter Stephenson
2012-11-01 15:21           ` Ray Andrews

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121031142546.529e1709@pwslap01u.europe.root.pri \
    --to=p.stephenson@samsung.com \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).