Solaris Express Developer Edition - Versionshinweise

Änderungen an den Datentypen uid_t und gid_t im Developer-Release 9/07

Zr Herstellung der Kompatibilität mit anderen Betriebssystemen wurden die Datentypen uid_t und gid_t von long (32-Bit-Binärdateien) und int (64-Bit-Binärdateien) in den Datentyp uint32_t geändert. Weitere Informationen zu diesem Leistungsmerkmal finden Sie in Änderung der Datentypen „uid_t“ und „gid_t“ in Neuerungen in der Solaris Express Developer Edition.

Diese Änderungen wirken sich wie folgt aus:

Auswirkungen auf neu compilierte C-Binärdateien

Bei der Neucompilierung von Code sollten Änderungen an den Datentypen uid_t und gid_t durch Standardparktiken im Entwicklungsprozess erkannt und gemeldet werden.

Dabei sollten Sie die folgenden Problembereiche berücksichtigen:


1 #include <unistd.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 int
6 main(void)
7 {
8 uid_t negone = -1;
9
10 if (getuid() < 0)
11 exit(1);
12
13 (void) setreuid(negone, getuid());
14
15 (void) printf("%ld\n", getuid());
16
17 return (0);
18 }

Hinweis –

Neu compilierte C-Binärdateien können zusammen mit vorhandenen Objekten und Systemobjekten verwendet werden, da die Datentypgröße gleich geblieben ist.


Auswirkungen auf C++—Code

Die Änderung an den Datentypen uid_t und gid_t hat eine neue Namenskryptisierung von Funktionen und Objekten in C++ zur Folge.

Wie bei C-Binärdateien auch funktionieren C++—Binärdateien und -Bibliotheken jedoch weiterhin wie zuvor. Die einzige Ausnahme besteht bei Bibliotheken mit Schnittstellen, die die Datentypen uid_t und gid_t verwenden. In diesem Fall müssen Bibliotheken, die diese Schnittstellen enthalten, und Anwendungen, die diese Schnittstellen verwenden, gleichzeitig neu compiliert werden.

Da im Betriebssystem Solaris C++—Schnittstellen dieser Art nicht öffentlich zugänglich sind, werden keine Inkompatibilitäten mit Solaris-Bibliotheken erwartet.