help running strace


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users help running strace
# 1  
Old 09-21-2006
help running strace

OK so I wanted to know how does grep outputs to the pipe and how sort reads from it. So I run a strace over "grep blah myfile | sort" and this is what I got:

open("myfile", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0600, st_size=84, ...}) = 0
read(3, "blah blah and blah cause of blah"..., 32768) = 84
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe8000
read(3, "", 32768) = 0
close(3) = 0
write(1, "blah blah and blah cause of blah"..., 85) = 85
close(1) = 0
munmap(0xb7fe8000, 4096) = 0
exit_group(0) = ?
Process 14533 detached
blah blah and blah cause of blah
find blah myfile blah grep it.
this is my blah file

I know that grep nor sort are aware of the pipe, they just input/output to the stdin/stdout... the pipe just connect them, that's how pipes works as far as I know... but what I don't see in this code is how grep is outputing to the pipe (stdout) and how is sort reading from the pipe (stdin). Is there anyway to check that relation? All I can tell from the code I bolded is:

MyFile -> Grep --------------------------> stdout

Unless "read(3, "", 32768)" has anything to do with the sort process.
Thanks in advance.
# 2  
Old 09-22-2006
strace has absolutely no idea how to set up pipes for anything, it only runs one process. The strace bit only goes as far as 'grep blah myfile', after which point the shell breaks your statement in half. sort is run by itself without the benefit of an strace.

How about:
Code:
strace grep blah myfile 2> grep.strace | strace sort 2> sort.strace

The relation between what's written into a pipe and what's read from a pipe is identical. You have
Code:
write(1, "blah blah and blah cause of blah"..., 85) = 85

on grep's side, and on sort's side you'll have something like
Code:
read( 0, "blah blah and blah cause of blah"..., 32768) = 85

The pipe waits until the writing process has written an '\n' somewhere, or the pipe's buffer is totally filled, before the other process stops waiting and gets to read any of it.

Last edited by Corona688; 09-22-2006 at 12:27 AM..
# 3  
Old 09-22-2006
It makes more sense now, I never thought of it as you painted it. Thanks a lot Corona.
# 4  
Old 09-24-2006
can u answer me.

Use strace to monitor what happens when the user creates a pipe as follows:

grep <pattern> <file> | sort

According to their man pages, both grep(1) and sort(1) process data on a line-by-line basis. Keeping this in mind, answer the following questions in a plain text file called answers.txt:

1. How does the grep process output data into the pipe according to the strace output? Please explain the behaviour you observe.
2. How does the sort process read data from the pipe according to the strace output? Please explain the behaviour you observe.
3. Does sort write the final result on a line-by-line basis according to the strace output? Please explain the behaviour you observe.

Hint: please make sure that you use appropriate input file for grep, i.e. one that is large enough, and an appropriate search pattern, which matches often enough.
# 5  
Old 09-25-2006
klam/jason296 - Please read the forum rules - you'll see that homework questions are not permitted.

You made a very clever attempt at disguising your homework question at first. I'm sure the CS tutors at York University can help you further.

Cheers
ZB
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Strace rpm requirement for RHEL 5.9

I have requirement for strace utility rpm package for RHEL 5.9. I have made a google for last 1 hr. but did not find the required one. Can any one help me out to find out the compatible rpm package of strace for Redhat 5.9 version (I require 64 bit version). (7 Replies)
Discussion started by: Anjan Ganguly
7 Replies

2. Ubuntu

Running strace command

I want to run the strace -p xxxx -o in a script to monitor a process that hangs sometimes and requires a restart, my question is if strace is constantly running in the background will it chew up system resources and cause the system slowness? (3 Replies)
Discussion started by: wereyou
3 Replies

3. Android

Strace help

I need to run and monitor applications on Android Emulator. I am using the strace utility to monitor system calls. Everytime to start strace i need to manually start the application , get the process Id of the application and then give it to strace to start logging all the system calls. So is... (20 Replies)
Discussion started by: far001han
20 Replies

4. UNIX for Advanced & Expert Users

Need help on strace output

Hi All, Good day, need some help on strace result. We're encountering oracle Database server connection slowness (using sqlplus login to db server, there have 1 or 2 secs delay) we had generated strace and provide to oracle to investigate, and they told us it look like OS problem (Our OS is Red... (4 Replies)
Discussion started by: klng
4 Replies

5. UNIX for Advanced & Expert Users

strace

Hi, does anyone know the equivalent command of the following in AIX : $ strace -tp 15033 Process 15033 attached - interrupt to quit 11:28:06 gettimeofday({1257766086, 104118}, NULL) = 0 11:28:06 getrusage(RUSAGE_SELF, {ru_utime={2270, 615813}, ru_stime={0, 634903}, ...}) = 0 Thank you (6 Replies)
Discussion started by: big123456
6 Replies

6. Shell Programming and Scripting

Running Total Running Wild

Hi. A shell scripting newbie here. I am trying to write a script that will create a running total of Sales, and increment a counter for each Sales entry, but when I executed the program it never stopped. counter=0 Sales=0 echo "enter sales price" read sales while do let counter=counter+1... (6 Replies)
Discussion started by: Ccccc
6 Replies

7. UNIX for Advanced & Expert Users

ioctl : strace

Hi All, int ioctl(int d, int request, ...); Can somebody tell me how does ioctl decides the input parameter: "request". Sometimes, its SNDCTL_TMR_TIMEBASE or TCGETS or FIONREAD...etc. What is the pattern?? I am asking this coz my strace returns this: ... (1 Reply)
Discussion started by: angad.makkar
1 Replies

8. Solaris

Running from Shell Vs running from RC script

Hi, i have a script which need to do behave differently when run as a startup process from init.d/ rc2.d script and when run manually from shell. How do i distinguish whether my script is run by init process or by shell?? Will the command /proc/$$/psinfo | grep "myscript" work well???... (2 Replies)
Discussion started by: vickylife
2 Replies

9. UNIX for Advanced & Expert Users

strace

Hi Gurus, I need to trace a sqlplus session using strace. Can someone please provide me the syntax. sorry was not able to figure out by reading the man page. :-( i tried to do as below but getting the error xt33db006/u1/app/oracle/product/10.2.0/asm_1$ strace -f sqlplus '/as sysdba'... (0 Replies)
Discussion started by: p4cldba
0 Replies

10. UNIX for Advanced & Expert Users

How to prevent job1 from running while job2 is running..

Hi, Please I need your expert advise on how to prevent/lock from execution job1 while job2 is still running in Unix... THanks:) (3 Replies)
Discussion started by: tikang
3 Replies
Login or Register to Ask a Question