scandir() and threads


 
Thread Tools Search this Thread
Top Forums Programming scandir() and threads
# 1  
Old 07-29-2010
scandir() and threads

I couldn't find anywhere informations about it. Is scandir() thread-safe?
# 2  
Old 07-29-2010
scandir() is supposed to be threadsafe on POSIX-compliant systems
Here is a list of those that are not threadsafe from unix.org:

Code:
Thread-safety


The following functions are not guaranteed to be thread-safe on all UNIX systems: 

asctime()  basename()  catgets()  ctime()  
dbm_clearerr()  dbm_close()  dbm_delete()  dbm_error()  
dbm_fetch()  dbm_firstkey()  dbm_nextkey()  dbm_open()  
dbm_store()  dirname()  drand48()  ecvt()  
encrypt()  endgrent()  endpwent()  endutxent()  
fcvt()  gamma()  gcvt()  getc_unlocked()  
getchar_unlocked()  getdate()  getenv()  getgrent()  
getgrgid()  getgrnam()  getlogin()  getopt()  
getpwnam()  getpwent()  getpwuid()  getutxent()  
getutxid()  getutxline()  getw()  gmtime()  
l64a()  lgamma()  lrand48()  localtime()  
mrand48()  nl_langinfo()  ptsname()  putc_unlocked()  
putchar_unlocked()  putenv()  pututxline()  rand()  
readdir()  setgrent()  setkey()  setpwent()  
setutxent()  strerror()  strtok()  ttyname()  



The functions ctermid() and tmpnam() need not be thread-safe if passed a NULL argument.

# 3  
Old 07-29-2010
I saw this list, but I was confused, when I read sources of scandir() (from glibc):
Code:
[...]
#define READDIR __readdir
[...]
  while ((d = READDIR (dp)) != NULL)
[...]

readdir() isn't thread safe
# 4  
Old 07-29-2010
Are you on linux? __readdir is a symbol, an entry point for the syscall. You need to read the __readdir kernel code.

scandir() is re-entrant and threadsafe because it does not use local static data like strtok() or localtime(). scandir is not async-safe.
This User Gave Thanks to jim mcnamara For This Post:
# 5  
Old 07-29-2010
Yes, I use linux.
Thanks for help
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

scandir help

Hi everyone; I am trying to compile and execute a test program I wrote that calls scandir and it seems to not like my prototype. The Documentation on SUN for this function is clear, but I am missed something..... and I can't figure it out; I am using cc -gv -osaveas saveas.c on Sun... (1 Reply)
Discussion started by: dhelie
1 Replies

2. Programming

Threads help

Hello! I started studying studying about POSIX Threads a few days ago... so I am a little confused and I would appreciate some help! I isolated this code... and I wonder if I could use threads in it! #include <unistd.h> #endif #include <math.h> //#include "main.h" #include <sys/time.h>... (1 Reply)
Discussion started by: smurf2
1 Replies

3. Programming

scandir() + windows equivalent

Currently, Im trying to redesign some Unix-based C code to work on the Windows operating system and one problem I ran into when compiling was that the compiler failed to recognise scandir() (from my original Linux code) Im aware that scandir() is a Unix-based function, so is there an equivalent... (1 Reply)
Discussion started by: JamesGoh
1 Replies

4. UNIX for Advanced & Expert Users

Threads and Threads Count ?

Hi all, How can I get the list of all Threads and the Total count of threads under a particular process ? Do suggest !! Awaiting for the replies !! Thanks Varun:b: (2 Replies)
Discussion started by: varungupta
2 Replies

5. UNIX for Advanced & Expert Users

How many threads do I use ?

Hi, I have a program that has two types of threads: 1) Reader threads 2) Worker Threads Readers: Their only job is to read files. They just read data from the files and put them into a buffer. They are obviously I/O intensive. Workers: These are CPU intensive. They do some computation... (5 Replies)
Discussion started by: the_learner
5 Replies

6. Solaris

threads

Hi all! 1)Is there a way to write a program that will work on both solaris and intel based machines. 2)How can I achive this for a program that creates and synchronizes three threads. Thank you. vij. (3 Replies)
Discussion started by: vijlak
3 Replies

7. Programming

scandir() for Solaris

I'd like to use scandir() on solaris, but it doesn't find sys/dir.h What do you think I should do? thanks (2 Replies)
Discussion started by: nadiamihu
2 Replies

8. UNIX for Dummies Questions & Answers

threads

i am tring to sort lots of data thats in many columns by just one column but, if I use sort +16 inputfile the column fluctuates because some of the rows have spaces etc within the text, so the end result is just a mess as it jumps around the columns depending whether it has spaces or not ....ie... (2 Replies)
Discussion started by: Gerry405
2 Replies

9. Programming

Need help with scandir / stat

I'm writing a file manager program using FC3 and C, and I'm having a problem displaying the stat info of subdirectories. #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> int main() { char *dirname = "mydirectory"; struct dirent **namelist; ... (2 Replies)
Discussion started by: Bertsura
2 Replies

10. Post Here to Contact Site Administrators and Moderators

old threads

Neo, if I have an old thread that is a few months old, and a few pages back in the forum it was posted in, is it ok to 'bump' it back to the front? or, would you rather i deleted the old thread, and just create a new one? btw the thread has no replies. (2 Replies)
Discussion started by: norsk hedensk
2 Replies
Login or Register to Ask a Question