[systemd-devel] Why do we must use the close_all_fds(3) function in some files?

Geunsik Lim geunsik.lim at gmail.com
Mon Jun 16 15:59:29 PDT 2014


On Tue, Jun 17, 2014 at 12:24 AM, Lennart Poettering <lennart at poettering.net
> wrote:

> On Mon, 16.06.14 21:32, Geunsik Lim (geunsik.lim at gmail.com) wrote:
>
> > Hi all,
> >
> > Recently, i checked that there are  some of the "close_all_fds" functions
> > as follows
> > Why we Systemd run this functions? Whey this functions need Systemd's
> > management?
> >
> > invain at u1204lgs:/sandbox/tizentvfolder/systemd$ grep -R "close_all_fds"
> ./*
> > ./src/nspawn.c:                close_all_fds(NULL, 0);
> > ./src/util.c:int close_all_fds(const int except[], unsigned n_except) {
> > ./src/util.c:        close_all_fds(NULL, 0);
> > ./src/main.c:                close_all_fds(NULL, 0);
> > ./src/spawn-agent.c:                close_all_fds(NULL, 0);
> > ./src/execute.c:                err = close_all_fds(socket_fd >= 0 ?
> > &socket_fd : fds,
> > ./src/execute.c:                err = close_all_fds(fds, n_fds);
> > ./src/util.h:int close_all_fds(const int except[], unsigned n_except);
>
> David is right, this is really just a safety net, and particularly
> useful when one of our tools is invoked from arbitrary code that might
> not be written cleanly.
>

It seems that a goal of close_all_fds() is garbage collector to guarantee
available file descriptors  for new fopen() system call.
Nowadays, the modern computer system is multi-process/multi-thread scheme
more than single-process/multi-thread.
Does systemd have to care the number of "open file size"? Actually, Is this
function need for safety net?
For example,
invain at u1204lgs:/opt/git-systemd$ ulimit  -n
1024

If Systemd does not execute the close_all_fds() functions,
What will be happened in real environment?

On the other hand, if systemd have to  not close more than two file
descriptors(e.g. 5, 17, 19) for some case to release Linux distribution
based on Systemd, can we use close_all_fds(except, ***)? In this case, Do
we have to specify  withclose_all_fds(except, 3 + 19)?

Thanks,


>
> Lennart
>
> --
> Lennart Poettering, Red Hat
>



-- 
----
Best regards,
Geunsik Lim, Samsung Electronics
http://leemgs.fedorapeople.org
----
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20140617/b0315a8e/attachment-0001.html>


More information about the systemd-devel mailing list