Difference between revisions of "ubuntu kernelversion number/de"

From Free Pascal wiki
Jump to navigationJump to search
(add hint about baseUnix.fpUname())
 
(3 intermediate revisions by the same user not shown)
Line 6: Line 6:
  
 
Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.
 
Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
uses
 
uses
 
   SysUtils, ...;
 
   SysUtils, ...;
Line 56: Line 56:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Das ganze läßt sich strukturierter mit {{Doc|package=RTL|unit=baseunix=identifier=fpuname|text=<code>FPUname</code>}} ermitteln:
+
Das ganze läßt sich strukturierter mit {{Doc|package=RTL|unit=baseunix=identifier=fpuname|text=<syntaxhighlight lang="pascal" inline>FPUname</syntaxhighlight>}} ermitteln:
<syntaxhighlight>
+
<syntaxhighlight lang="pascal" line highlight="3-5,16-17,21,27-28">
 
program kerninfo(input, output, stderr);
 
program kerninfo(input, output, stderr);
  

Latest revision as of 16:16, 6 August 2022

Deutsch (de)

Zurück zur Seite Code Beispiele.

Dieser Artikel beschäftigt sich mit der Linuxprogrammierung (Ubuntu).

Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.

uses
  SysUtils, ...;

  ...

function funLeseDatei: string;
var
  txtDatei: Textfile;
begin
  Assignfile(txtDatei, '/proc/version'); // weist txtDatei die Datei zu
  reset(txtDatei); // oeffnet die Datei zum Lesen
  readln(txtDatei, Result); // liest die erste Zeile
  Closefile(txtDatei); // schliesst die Datei
end;


function funKernelversionsNummer: string;
var
  intI: integer = 0;
  intZaehler: integer = 0;
  strProcVersion: string = '';

begin

  Result := '';

  strProcVersion := funLeseDatei();
  if strProcVersion = '' then
    exit;

  for intI := 1 to Length(strProcVersion) do
  begin

    if (strProcVersion[intI] = '-') then
    begin
      intZaehler := intZaehler + 1;
      if intZaehler > 1 then break;
    end;

    if (strProcVersion[intI] in ['0'..'9', '.', '-']) then
      Result := Result + strProcVersion[intI];

  end;

end;
  
...

Das ganze läßt sich strukturierter mit FPUname ermitteln:

 1program kerninfo(input, output, stderr);
 2
 3uses
 4	// baseUnix for fpUname
 5	baseunix,
 6	// sysutils for format
 7	sysutils,
 8	// gettext for internationalization
 9	gettext;
10
11resourcestring
12	unameFailure  = 'uname(2) failed';
13	releaseNumber = 'release number: %0:s';
14	versionNumber = 'version number: %0:s';
15
16var
17	kernelInfo: utsName;
18begin
19	translateResourceStrings('./' + applicationName() + '.%s.mo');
20	
21	if fpUname(kernelInfo) <> 0 then
22	begin
23		writeLn(stderr, unameFailure);
24		halt(1);
25	end;
26	
27	writeLn(format(releaseNumber, [kernelInfo.release]));
28	writeLn(format(versionNumber, [kernelInfo.version]));
29end.