ubuntu kernelversion number/de

From Free Pascal wiki

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:

 1 program kerninfo(input, output, stderr);
 2 
 3 uses
 4 	// baseUnix for fpUname
 5 	baseunix,
 6 	// sysutils for format
 7 	sysutils,
 8 	// gettext for internationalization
 9 	gettext;
10 
11 resourcestring
12 	unameFailure  = 'uname(2) failed';
13 	releaseNumber = 'release number: %0:s';
14 	versionNumber = 'version number: %0:s';
15 
16 var
17 	kernelInfo: utsName;
18 begin
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]));
29 end.