ubuntu kernelversion number/de

From Lazarus wiki
Revision as of 01:35, 30 January 2018 by Kai Burghardt (talk | contribs) (add hint about baseUnix.fpUname())
Jump to navigationJump to search

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:

program kerninfo(input, output, stderr);

uses
	// baseUnix for fpUname
	baseunix,
	// sysutils for format
	sysutils,
	// gettext for internationalization
	gettext;

resourcestring
	unameFailure  = 'uname(2) failed';
	releaseNumber = 'release number: %0:s';
	versionNumber = 'version number: %0:s';

var
	kernelInfo: utsName;
begin
	translateResourceStrings('./' + applicationName() + '.%s.mo');
	
	if fpUname(kernelInfo) <> 0 then
	begin
		writeLn(stderr, unameFailure);
		halt(1);
	end;
	
	writeLn(format(releaseNumber, [kernelInfo.release]));
	writeLn(format(versionNumber, [kernelInfo.version]));
end.