[En-Nut-Discussion] Do Threads inherit the standard file descriptiors?

ole.reinhardt at embedded-it.de ole.reinhardt at embedded-it.de
Tue Jan 7 18:12:55 CET 2014


Hi Uwe,

Filedescriptors are common to all threads.

If they change, someone changed them or overwrite them.

Any race condition in your code?

By, ole
Von meinem Android-Gerät gesendet.

-----Original Message-----
From: bon at elektron.ikp.physik.tu-darmstadt.de
To: "Ethernut User Chat (English)" <en-nut-discussion at egnite.de>
Sent: Di., 07 Jan. 2014 11:10
Subject: [En-Nut-Discussion] Do Threads inherit the standard file descriptiors?

Hello,

in the cause of tracking down some other problem, I noticed with stdout set
in main() a printf() in the new thread doesn't print to stdout. Is this
designed behaviour?

Backtrace in main():
Breakpoint 3, _putf (_putb=0x8001235 <_write>, fd=1, fmt=0x8006a58 "Running at %ld Hz\n", ap=...)
    at /home/bon/devel/ethernut_sf/nut/crt/putf.c:265
265         rc = 0;
(gdb) bt
#0  _putf (_putb=0x8001235 <_write>, fd=1, fmt=0x8006a58 "Running at %ld Hz\n", ap=...)
                                     ^^^^^
    at /home/bon/devel/ethernut_sf/nut/crt/putf.c:265
#1  0x08000920 in vfprintf (stream=0x20001768, fmt=0x8006a58 "Running at %ld Hz\n", ap=...)
    at /home/bon/devel/ethernut_sf/nut/crt/vfprintf.c:72
#2  0x080008aa in printf (fmt=0x8006a58 "Running at %ld Hz\n")
    at /home/bon/devel/ethernut_sf/nut/crt/printf.c:71
#3  0x080003d8 in main () at motctl.c:181
(gdb) c

Backtrace in the thread:
Breakpoint 3, _putf (_putb=0x8001235 <_write>, fd=4, fmt=0x8006a18 "%3d (0x%02x) detected\n", ap=...)
    at /home/bon/devel/ethernut_sf/nut/crt/putf.c:265
265         rc = 0;
(gdb) bt
#0  _putf (_putb=0x8001235 <_write>, fd=4, fmt=0x8006a18 "%3d (0x%02x) detected\n", ap=...)
                                     ^^^^^
    at /home/bon/devel/ethernut_sf/nut/crt/putf.c:265
#1  0x08000920 in vfprintf (stream=0x20001768, fmt=0x8006a18 "%3d (0x%02x) detected\n", ap=...)
    at /home/bon/devel/ethernut_sf/nut/crt/vfprintf.c:72
#2  0x080008aa in printf (fmt=0x8006a18 "%3d (0x%02x) detected\n")
    at /home/bon/devel/ethernut_sf/nut/crt/printf.c:71
#3  0x08000180 in ScanBus (bus=0x20000304) at motctl.c:115
#4  0x080001ea in I2cInit (arg=0x0) at motctl.c:131
#5  0x080001b0 in ScanBus (bus=0x20000998) at motctl.c:120
#6  0x08000140 in ScanBus (bus=0x0) at motctl.c:109
#7  0x00000000 in ?? ()

While in main fd is 1 as expected, fd is 4 in the thread. A fprintf(stdout,
... ) in the thread also has fd set to 4.

Did I miss something in the configurator?

Bye
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------m
_______________________________________________
http://lists.egnite.de/mailman/listinfo/en-nut-discussion



More information about the En-Nut-Discussion mailing list