Thread View: comp.std.unix
6 messages
6 total messages
Started by Simon Patience
Mon, 20 Aug 1990 16:43
Question about atexit()
Author: Simon Patience
Date: Mon, 20 Aug 1990 16:43
Date: Mon, 20 Aug 1990 16:43
29 lines
1740 bytes
1740 bytes
From: sp@mysteron.osf.org (Simon Patience) Recently, while discussing pthreads, I mentioned the use of atexit() as a way of helping thread cleanup if another thread calls exit(). It was pointed out to me that atexit() is not defined in 1003.1 1988. I looked it up and sure enough it is not in the fabled list of ANSI C interfaces on page 141 and on page 183 it says that as exit() must do all the things _exit() does then this allows 1003.1 to ignore the atexit() function. I have to admit that I didn't understand that logic at all as it ignores the use of atexit() by the application to clean up inter-process state that the kernel cannot know about (such as data consistency in shared memory etc etc). I originally assumed that as .1 #includes all of ANSI C then atexit() would be able to be used in a conforming application but the book appears to indicate otherwise. So, can anyone in .1 explain whether atexit() really is required by .1 or not and if not, what the rationale is because I don't understand what the book is getting at. Simon Patience Phone: (617) 621-8736 Open Software Foundation FAX: (617) 225-2782 11 Cambridge Center Email: sp@osf.org Cambridge MA 02142 uunet!osf.org!sp Volume-Number: Volume 21, Number 44
Re: Question about atexit()
Author: Doug Gwyn
Date: Mon, 20 Aug 1990 20:12
Date: Mon, 20 Aug 1990 20:12
14 lines
1116 bytes
1116 bytes
From: Doug Gwyn <gwyn@smoke.brl.mil> In article <442@usenix.ORG> sp@mysteron.osf.org (Simon Patience) writes: >It was pointed out to me that atexit() is not defined in 1003.1 >1988. IEEE Std 1003.1-1988 didn't explicitly specify atexit() for the ANSI C- compatible variant because several people on P1003 didn't like it. If in your procurement specifications you specify conformance to both ANSI X3.159-1989 and IEEE Std 1003.1, then the ANSI C conformance requirement suffices to guarantee the provision of atexit() facilities. Volume-Number: Volume 21, Number 45
Re: Question about atexit()
Author: Dave Decot
Date: Tue, 21 Aug 1990 04:04
Date: Tue, 21 Aug 1990 04:04
41 lines
2154 bytes
2154 bytes
From: decot@hpisod2.cup.hp.com (Dave Decot) > Recently, while discussing pthreads, I mentioned the use of atexit() > as a way of helping thread cleanup if another thread calls exit(). > It was pointed out to me that atexit() is not defined in 1003.1 > 1988. > I originally assumed that as .1 #includes all of ANSI C then atexit() > would be able to be used in a conforming application but the book > appears to indicate otherwise. That assumption is false: only for one type of conformance is all of ANSI C required. For other types, only interfaces reflecting "common usage in C" are required (a mostly undefined concept, unfortunately). > So, can anyone in .1 explain whether atexit() really is required > by .1 or not and if not, what the rationale is because I don't > understand what the book is getting at. > ... > Simon Patience atexit() is required when the implementation claims Standard C Language support, since it is required by the C Standard. atexit() is not required for implementations that claim Common Usage C Language Support, although the fact must be documented that exit() does not work as defined by the C standard. For the reasons stated by Simon above, I personally think it should have been included in the list of functions at the beginning of Chapter 8 of POSIX.1-1988, but wasn't. I would like to see it (or some kind of language independent version, at least, with it required in the C binding) required by a future version of POSIX.1 . In the mean time, I think it would be prudent for POSIX.4 and POSIX.4a to require a C Standard conforming atexit() function. Dave Decot Volume-Number: Volume 21, Number 46
Re: Question about atexit()
Author: Donn Terry
Date: Wed, 22 Aug 1990 16:30
Date: Wed, 22 Aug 1990 16:30
36 lines
2171 bytes
2171 bytes
From: Donn Terry <donn@hpfcrn.fc.hp.com> The list at the beginning of chapter 8 is NOT a list of the requirements of POSIX.1 on the C standard, although it is often misread that way. It is a list of functions *from the C standard* that must be provided by a "common usage" implementation. That list will (as far as I can predict) be completely removed from the first version of the standard that doesn't discuss common usage, and rely solely on the pointer from POSIX.1 C-language binding to X3.159/ISO 9xxx (someone can fill in the number, I forget) for all Standard C functions. Also, if you read the requirements on common usage closely enough, you realize that if you document it well enough, you probably could get away with a Fortran compiler. (OK... maybe that's an exaggeration, but not by a whole lot.) Doug Gwyn is right: specify the Standard C conformant option to POSIX (or simply specify Standard C) and you'll get atexit(). (Also, until POSIX.1 is stated in terms soley of Standard C (when it ceases to be necessary), there is nothing at all to prevent POSIX.4 from requiring that atexit() with the Standard C semantics be provided in common-usage implementations. POSIX.4 could also simply require Standard C to be conformant, although I doubt that that would succeed in balloting.) Atexit() was omitted primarily because it was an X3J11 invetion that was not rapidly being included in common usage compilers. Since (transitional) backwards compatabilty of implementations was a concern for POSIX.1, that was a reasonable decision two years (or more) ago. Donn Terry Speaking only for myself, as I always have to say. volume-Number: Volume 21, Number 52
Re: Question about atexit()
Author: Chuck Karish
Date: Mon, 27 Aug 1990 18:32
Date: Mon, 27 Aug 1990 18:32
54 lines
3057 bytes
3057 bytes
From: karish@mindcrf.uucp (Chuck Karish) In article <450@usenix.ORG> Donn Terry wrote about the issue of exactly what support of the C standard need be provided by a 1003.1-conforming system. I've discussed the issue with him by phone and am satisfied that we understand the underlying issues the same way, but I'm still concerned by the wording of the referenced article. >The list at the beginning of chapter 8 is ... >a list of functions *from the C standard* that must be provided >by a "common usage" implementation. It is also a list of functions that must be provided by a system providing C Standard Language-Dependent System Support: "Implementors shall meet the requirements of Section 8 using for reference the C Standard" (P1003.1a/D5, 1.2.3.2, ll. 168-169). >That list will (as far as I can >predict) be completely removed from the first version of the standard >that doesn't discuss common usage, and rely solely on the pointer from >POSIX.1 C-language binding to X3.159/ISO 9xxx ... >for all Standard C functions. This implies that future versions of POSIX.1 will require that a full implementation of Standard C be present. There is no such requirement in the current document, even for the C standard option. I'd like to see the list stay, if only to make it easier to assess the impact of future changes to Standard C on POSIX compliance: whether upgrading the C compiler and libraries will break existing code. >Doug Gwyn is right: specify the Standard C conformant option to POSIX >(or simply specify Standard C) and you'll get atexit(). I disagree. Certainly if the customer specifies that a full implementation of standard C be part of the package, it will be present, but POSIX.1 doesn't require this. This is an issue that should be resolved when the profile is drawn up to describe a complete system. It would seem to be outside the scope of the 1003.1 effort. >Also, until POSIX.1 is stated in terms soley of Standard C (when it >ceases to be necessary), there is nothing at all to prevent POSIX.4 from >requiring that atexit() with the Standard C semantics be provided in >common-usage implementations. This is an excellent suggestion, which POSIX.4 should adopt regardless of the status of C standard support in the POSIX.1 standard. Every standard should specify its critical reliances on the provisions of other standards. -- Chuck Karish karish@mindcraft.com Mindcraft, Inc. (415) 323-9000 Volume-Number: Volume 21, Number 64
Re: Question about atexit()
Author: Doug Gwyn
Date: Tue, 28 Aug 1990 03:44
Date: Tue, 28 Aug 1990 03:44
14 lines
1165 bytes
1165 bytes
From: Doug Gwyn <gwyn@smoke.brl.mil> In article <466@usenix.ORG> karish@mindcrf.uucp (Chuck Karish) writes: >>Doug Gwyn is right: specify the Standard C conformant option to POSIX >>(or simply specify Standard C) and you'll get atexit(). >I disagree. Certainly if the customer specifies that a full >implementation of standard C be part of the package, it will be >present, but POSIX.1 doesn't require this. And indeed I did NOT say what Donn's paraphrase suggests. I said that if you need atexit() you should specify conformance to the C standard (as well as any POSIX conformance that you need). Volume-Number: Volume 21, Number 66
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads