New answers tagged system-calls
Directories are special in the sense that within a directory you can have references to several files and directories, so, if you remove the parent directory, all those files lose their reference point from where they can be accessed, the same with process. For such cases, rmdir() have different checks, that are different from unlink(): If the directory is ...
There's no traditional Unix system call for "copy the full contents of one fd to another". Loops of "read a chunk; stop if EOF; write the chunk" were always written in userspace. There are some recent additions like sendfile(2) and splice(2) which allow you to do the equivalent of a read-write loop in a single syscall. Using these can improve performance at ...
/bin/ls usually sorts the output. I'm not sure if your "efficient" question is just over system calls or the entire work that is done, but /bin/ls -f would probably do the least work. It only returns the filenames in directory order. No sorting, no additional inode lookups to get metadata (as ls -l would do). Also, if your default ls is colorizing, it ...
ls -l is definitely more expensive, since it has to query the file system for metadata such as owner, group, permissions, access time, etc. Vanilla /bin/ls only has to look up the names of the entries in the directory being listed. Note that ls may be aliased on your system to something less vanilla than /bin/ls. Run type ls to see if that's the case.
Top 50 recent answers are included