> -- Kemet писал(а):
> а можно у вас как-то errno посмотреть?


## Код:
```
VAR   
      process: INTEGER;
      cmd, type: LinLibc.PtrSTR;
      sp: INTEGER;

   PROCEDURE POpen (a, t: ARRAY [untagged] 128 OF SHORTCHAR): INTEGER;
   BEGIN   
      SYSTEM.GETREG(4, sp);
      SYSTEM.PUTREG(4, sp DIV 16 * 16 - X);
      cmd := SYSTEM.VAL(LinLibc.PtrSTR, SYSTEM.ADR(a[0]));
      type := SYSTEM.VAL(LinLibc.PtrSTR, SYSTEM.ADR(t[0]));
      RETURN LinLibc.popen(cmd, type);
   END POpen;
   
   PROCEDURE (h: ExtCallHook) OpenExternal* (IN fileName: ARRAY OF CHAR);
   VAR  res: INTEGER;
   BEGIN
      process := POpen("xdg-open " + SHORT(fileName$) + " &", "r");
      res := LinLibc.pclose(process);
   END OpenExternal;
   
   (*   get error num from linux   *)
   PROCEDURE Errno*;
      VAR
         addr, errno: INTEGER;
   BEGIN
      addr := LinLibc.__errno_location();
      SYSTEM.GET(addr, errno);
      Log.Int(process); Log.Int(errno); Log.Ln;
   END Errno;
```


Для отладки вызываю процедуру Errno до открытия ссылки и после:

До открытия:  0 11
После: 163161008 11
Дескриптор файла значит создается корректно. 11 - какая-то ошибка, которая там висит сразу после запуска ББ
## Код:
```
EAGAIN* = 11;   (* Try again *)
```


Изменения параметра X в процедуре POpen на 4, 8, 12, 16 не приводят к успеху. Обычно при проблемах выравнивания этот прием помогает.