SORU
16 EYLÜL 2008, Salı


Nedir $$ kabuğunda?

Bir keresinde geçici dosyaları için bir kabuk benzersiz bir dosya adı elde etmenin bir yolu çift dolar işareti ($$) kullanmak olduğunu okuyacaksınız. Bu zaman zaman değişen bir sayı üretir... ama eğer tekrar tekrar çağırırsanız, aynı sayıda döner. (Çözüm sadece zaman kullanmak için.)

$$ aslında ne olduğunu ve benzersiz dosya adları oluşturmak için bir yol olarak önerilen olurdu neden olduğunu merak ediyorum.

CEVAP
17 EYLÜL 2008, ÇARŞAMBA


$$ bash işlemi (PID) kimliğidir. $$ kullanarak genellikle, bir yarış durumu oluşturmak ve kabuk betiği eğer bir saldırgan tarafından altüst olmasını sağlayacaktır, çünkü kötü bir fikir değil. Bakın, örneğin, güvensiz geçici dosya oluşturulur ve güvenlik uyarılarının sorunu vardı these people.

Bunun yerine, mktemp kullanın. Linux man page for mktemp mükemmel. İşte bazı örnek kod:

tempfoo=`basename $0`
TMPFILE=`mktemp -t ${tempfoo}` || exit 1
echo "program output" >> $TMPFILE

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CNET

    CNET

    5 Mayıs 2006
  • engineerguy

    engineerguy

    10 Ocak 2010
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008