2010-01-25 35 views
5

Sistem çağrısı komutunu kullanarak C++ 'dan bash komut dosyasını yürütürken bir sorunum var. Komut dosyası, SIGPIPE sinyalini yakalar ve 141 dönüş kodu ile çıkar.SIGPIPE'yi bash komut dosyasında yakalamanız önerilir mi?

Bu sorun, yalnızca kodun son sürümlerinde görünmeye başlamıştır.

Sorularım'a

aşağıdaki gibidir:

  1. Neden bu SIGPIPE şimdi oluşur ve daha önce meydana gelmedi mi?
  2. SIGPIPE'yi göz ardı etmek güvenli midir ve sonuçları nelerdir?
+0

Bazı ilgili kod parçacıklarını gönderir misiniz? – tur1ng

+0

gibi cevapların açıklandığı gibi, bir yere kırık bir boru ve bu nedenle 'SIPIPE' sinyaldir. Mantıksal kullanımda bir şeylerin yanlış olduğu anlamına gelir. Bunu görmezden gelmemelisin. –

cevap

3

1) Yani değiştiğini tam olarak ne olduğunu bilmeden cevap vermek çok zordur. komutlar dizisi bir boru hattı görünür ve yazar tamamlanmadan önce okuma biri bitirir komutları ise
2), yazar bir SIGPIPE sinyal alır. Bu yüzden göz ardı edip edemeyeceğiniz, bunun betiğiniz için kabul edilebilir bir davranış olup olmadığına bağlıdır. Daha fazla bilgi here

2

current version of the FAQ devletlere bağlı PiedPipero C:

Bash-3.1 itibariyle bash varsayılan olarak SIGPIPE hatalarını bildirmez. , bu tür hataları rapor edecek bir bash sürümü oluşturabilir.

Eğer Bash sürümleri veya inşa edilene alışkanlıklarını değiştirdi, o kodunuzu davranış değişikliği neden olması mümkün mü?

İlgili konular