----- Original Message ----- > Currently, when using pipe in command line, we cannot specify > a script with shebang directly like this: > > crash> foreach bt | ./analyze.awk > crash: pipe operation failed > > (or it looks like crash can loop until Ctrl-C depending on timing) > > This is a bit confusing and inconvenient because it's not shell-like > behavior. > > The cause is that output_command_to_pids() searches /proc/PID/stat > files for "(path/to/script)" string and cannot find such process, > and also the ps kludge doesn't work well in this case. This patch > removes the part except its file name like "(script)" so that it can > find the process. Just to clarify, is this is due to using "./analyze.awk" (with the preceding "./"), whereas if you were to use "analyze.awk", it would work OK? Dave > > Signed-off-by: Kazuhito Hagio <k-hagio@xxxxxxxxxxxxx> > --- > cmdline.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/cmdline.c b/cmdline.c > index ee08f06..c0a9f4f 100644 > --- a/cmdline.c > +++ b/cmdline.c > @@ -806,7 +806,7 @@ output_command_to_pids(void) > char buf1[BUFSIZE]; > char buf2[BUFSIZE]; > char lookfor[BUFSIZE+2]; > - char *pid, *name, *status, *p_pid, *pgrp; > + char *pid, *name, *status, *p_pid, *pgrp, *comm; > char *arglist[MAXARGS]; > int argc; > FILE *pipe; > @@ -815,7 +815,8 @@ output_command_to_pids(void) > retries = 0; > shell_has_exited = FALSE; > pc->pipe_pid = pc->pipe_shell_pid = 0; > - sprintf(lookfor, "(%s)", pc->pipe_command); > + comm = strrchr(pc->pipe_command, '/'); > + sprintf(lookfor, "(%s)", comm ? ++comm : pc->pipe_command); > stall(1000); > retry: > if (is_directory("/proc") && (dirp = opendir("/proc"))) { > -- > 1.8.3.1 > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility