Как я могу определить, что дескриптор файла был переопределен в новый дескриптор файла? - PullRequest
0 голосов
/ 24 октября 2011

В этом коде:

open my $fh1,'>','file1';
my $fh1_desc=fileno $fh1;
close $fh1;

open my $fh2,'>','file2';

open my $fh1_,'>&=',$fh1_desc;

if (fileno $fh1_ == fileno $fh2 ) {
    print "\$fh1_ and \$fh2 are dups\n";
}

После этого $fh1_ и $fh2 указывают на один и тот же файл.Как я могу обнаружить, что переопределение файлового дескриптора?

Это «фиктивный код»!Реальный случай:
Когда я передаю дескриптор файла в другой поток, как я могу узнать, что он не был переопределен?

1 Ответ

1 голос
/ 24 октября 2011

После того, как вы закрыли дескриптор файла, числовой дескриптор не имеет смысла и, как вы показали, обычно просто будет повторно использоваться при следующем открытии. Я предлагаю, чтобы при закрытии файла вы устанавливали любые дескрипторы, которые могут вам понадобиться, чтобы «undef», чтобы не обманывать себя, думая, что они все еще действительны.

Но я, возможно, неправильно понял вашу проблему - вы не предоставили очень много деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...