help regarding the strace output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,
I am new to this group. I am not sure whether this is the right place to ask this kind
of question. Here is my doubt.

I wrote a simple C program.

#include<stdio.h>
#include<unistd.h>

int main()
{
       printf("Hello, World\n");
       sleep(10);
}

if i compile this program using "gcc sample.c -o sample" and run this using 'strace',

case 1) run as fg process using "strace ./sample" in command prompt


write(1, "Hello, World\n", 13Hello, World)          = 13
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({10, 0}, {10, 0})             = 0

case 2 ) run the above command with making this bg process (attaching &)
#strace ./sample &

same output

case 3) running the above command inside a shell script

tesh.sh

strace ./sample 2>&1 |tee my.log

if i run the shell script in command prompt using #./test.sh, i am getting this output :

rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({10, 0}, {10, 0})             = 0
write(1, "Hello, World\n", 13Hello, World )          = 13

here the sequence is different :- first sleep()[nanosleep()] and then write().

it looks surprising for me why the sequence is differet here. could anybody please clarify me ?

Thanks a lot in advance :)

regards/santosh






[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux