Как я делаю droplet/.app у утконоса для моей команды Unix?

Linux использует обоих. Это использует сегментацию для отображения всего доступного адресного пространства при предоставлении различных прав доступа: в основном ядро и представление пространства пользователя. Вы можете grep исходный код Linux для KERNEL_DS (сегмент данных ядра) для некоторых примеров.

Подкачка страниц затем используется для реализации виртуальной памяти (Grep для "структуры gdt_page" в ядре для начальной точки)

2
22.12.2011, 20:24
1 ответ

Я не иду в листы это оставшееся без ответа, потому что существует несколько вещей серьезно неправильно с этим сценарием. Однако, потому что я не знаю то, что сценарий, как предполагается, делает, этот ответ не собирается решать Вашу проблему.

  • chdir($directory); может перестать работать. Необходимо обработать ошибку.

    chdir($directory) or die "chdir($directory): $!";
    
  • $files .= "'$filename' " не надлежащее заключение в кавычки на имя файла: это перестанет работать, если имя файла будет содержать a '. Вы могли подготовить имя файла с $filename =~ s/'/'\\''/, но существует на самом деле лучший способ сделать это (см. следующий вопрос).

  • system с отдельным аргументом вызывает оболочку. Но Вы не используете функции оболочки, так вместо этого необходимо использовать форму списка. И тот способ, которым Вы не должны создавать строку, которая собирает все имена файлов: просто используйте список, который Вы уже имеете.

    my @cmd = qw(/usr/bin/tar cvfz);
    system(@cmd, $dest_path, @ARGV);
    
  • Все еще необходимо обработать ошибки от system.

    system(@cmd, $dest_path, @ARGV) or die "Call to $cmd[0] failed with status $?";
    

    Если это - последняя вещь, Ваш сценарий делает, звонит exec вместо этого.

    exec(@cmd, $dest_path, @ARGV) or die "exec $cmd[0] failed: $!";
    

До сих пор Вы могли сделать все это легко в оболочке.

#!/bin/sh
set -e
cmd='tar cvzf'
dest_path='Archive.tgz'
cd -- "$(dirname -- "$0")"
echo "$cmd $dest_path $*"
exec $cmd "$dest_path" "$@"
1
27.01.2020, 22:24

Теги

Похожие вопросы