Node.js'de Alt Süreçler Nasıl Oluşturulur

Node Js De Alt Surecler Nasil Olusturulur



Programlama sırasında “ node.js “Uygulamanın artan iş yüküyle baş etmede tek bir süreç hiçbir zaman verimli olmuyor. Bu nedenle geliştiricinin yeni süreçler oluşturması, uzun vadeli görevlerle çalışması ve işletim sistemiyle etkileşimi etkinleştirmesi gereken belirli durumlar olabilir. Bu, birden çok işlemden yararlanmak için alt işlemler oluşturularak ve böylece bir Node uygulamasının ölçeklendirilmesiyle başarılabilir.

Bu yazı aşağıda listelenen içeriği açıklamaktadır:







Çocuk Süreci Nedir?

Bir alt süreç, başka bir süreç, yani ebeveyn tarafından oluşturulan bir sürece karşılık gelir. Node.js şunu sağlar: çocuk_işlemi Alt süreçler arasındaki etkin iletişimi sağlayan modül. Ayrıca bu modül, bir alt süreç içerisinde herhangi bir sistem komutunu çalıştırarak işletim sistemi özelliklerinin çağrılmasına yardımcı olur.



Node.js'de Alt Süreçler Nasıl Oluşturulur?

Çocuk “ node.js ” aşağıda belirtilen yaklaşımlarla oluşturulabilir:



  • yumurtlama() ' Yöntem.
  • çatal() ' Yöntem.
  • exec() ' Yöntem.
  • execDosyası() ' Yöntem.

Yaklaşım 1: Node.js'de “spawn()” Yöntemi ile Alt Süreçler Oluşturma

yumurtlama() ” yöntemi, sağlanan cmdlet'i ve komut satırı bağımsız değişkenlerini kullanarak yeni bir süreçte bir cmdlet oluşturur. ChildProcess örneği, alt nesnelerdeki olaylar için işleyicilerin kaydedilmesine olanak tanıyan EventEmitter API'sini uygular/uygular. Bu olaylar çıkış, bağlantıyı kesme, hata, mesaj ve kapatmayı içerir.





Sözdizimi

child_process. yumurtlamak ( cmdlet'i [ , argümanlar ] [ , seçenekler ] )

Bu sözdiziminde:



  • cmdlet'i: Yürütülecek cmdlet olan bir dize alır.
  • argümanlar: Dize argümanları listesini ifade eder. Varsayılan değer boş bir dizidir.
  • seçenekler ” Boolean değeri alan bir “kabuk” olabilir. Öyle ise “ doğru ”, cmdlet kabuğun içinden yürütülür. Varsayılan değer “ YANLIŞ ” ki bu da kabuk olmadığını ima ediyor. Varsayılan olarak, ' yumurtlama() ” cmdlet'i çalıştırmak için bir kabuk oluşturmaz/oluşturmaz, bu nedenle alt sürece erişirken bunu bir “seçenek” olarak iletmek çok önemlidir.

Geri dönüş değeri: Bu yöntem bir ChildProcess nesnesini alır.

Aşağıda bir alt süreç oluşturmanın gösterimi yer almaktadır:

yapı { yumurtlamak } = gerekmek ( 'child_process' ) ;

yapı çocuk = yumurtlamak ( 'Sen' , [ 'D: \S ETUPS' ] , { kabuk : doğru } ) ;

çocuk. stdout . Açık ( 'veri' , ( veri ) => {

konsol. kayıt ( 'stdout' : $ { veri } ' ) ;

} ) ;

çocuk. stderr . Açık ( 'veri' , ( veri ) => {

konsol. hata ( 'stderr' : $ { veri } ' ) ;

} ) ;

çocuk. Açık ( 'kapalı' , ( kod ) => {

konsol. kayıt ( `alt süreçten $ koduyla çıkıldı { kod } ' ) ;

} ) ;

Bu kod bloğunda:

  • Her şeyden önce şunu ekleyin: çocuk_işlemi ” Bir alt süreç oluşturmak için modül.
  • Bundan sonra, içeriği belirtilen yolda görüntülemek için bir alt süreç oluşturun; örneğin, ' D:\KURULUMLAR ”.
  • Son olarak “ kapalı Tüm alt süreçten çıkıldığında ve konsolda çıkış mesajı görüntülendiğinde ” olayı çağrılır.

Çıktı

Burada, kodu çalıştırmak ve içeriği hedef yolda görüntülemek için aşağıdaki cmdlet'i yürütün:

düğüm sıcaklığı js

Yaklaşım 2: Node.js'de “fork()” Yöntemini Kullanarak Alt Süreçler Oluşturma

Bu yöntem “ yumurtlama() Çocuk ve ebeveyn süreçleri arasındaki iletişimin “” üzerinden yürütülebildiği yöntem Göndermek() ' yöntem.

çatal() ” yöntemi, karmaşık hesaplama görevlerini olay döngüsünden (ana) ayırır. Bu yöntem birden fazla alt işleme erişmek için kullanılabilir ancak her işlemin kendi belleği olduğu için genel performansı etkileyebilir.

Sözdizimi

child_process. çatal ( mdpath [ , argümanlar ] [ , seçenekler ] )

Bu sözdizimine göre:

  • mdpath ” alt öğede yürütülecek modülü temsil eden bir dize alır.
  • argümanlar ”, bir dize bağımsız değişkenleri listesini ifade eder.
  • seçenekler ”, “execPath”, “env”, “CWD”, “detached” ve “execArgv” olabilir.

Geri dönüş değeri: Bu yöntem bir ChildProcess örneğini alır.

Kod(Ana Süreç)

Şimdi ebeveyn ve çocuk süreçleri arasındaki iletişimi sağlayan aşağıdaki kod bloğunu “” yardımıyla inceleyiniz. Göndermek() ' yöntem:

yapı cp = gerekmek ( 'child_process' ) ;

izin ver çocuk = cp. çatal ( __dirname + '/fork2.js' ) ;

çocuk. Açık ( 'İleti' , işlev ( X ) {

konsol. kayıt ( 'Ana süreç şunları elde etti:' , X ) ;

} ) ;

çocuk. Göndermek ( { Merhaba : 'ebeveyn sürecinden' } ) ;

çocuk. Açık ( 'kapalı' , ( kod ) => {

konsol. kayıt ( `alt süreçten $ koduyla çıkıldı { kod } ' ) ;

} ) ;

Bu kodda:

  • Aynı şekilde, ' çocuk_işlemi ” Bir alt süreç oluşturmak için modül.
  • Şimdi alt sürecin yolunu “ ile belirtin. çatal() ' yöntem.
  • Son olarak ana süreci temsil eden mesajı “ Göndermek() ” yöntemini kullanın ve varsa karşılaşılan hataları görüntüleyin.

Kod(Alt Süreç)

Aşağıdaki kod dosyası yani, “ fork2.js ” aynı zamanda “ kullanarak mesajı gönderen alt süreci temsil eder. Göndermek() ” yöntemi aşağıdaki gibidir:

işlem. Açık ( 'İleti' , işlev ( M ) {

konsol. kayıt ( 'Çocuk süreci var:' , M ) ;

} ) ;

işlem. Göndermek ( { Merhaba : 'çocuk sürecinden' } ) ;

Çıktı

Şimdi kodu çalıştırmak için aşağıda verilen cmdlet'i çalıştırın:

düğüm çatal çocuğu. js

Bu çıktıdan ebeveyn-çocuk süreç iletişiminin uygun şekilde yürütüldüğü doğrulanır.

Yaklaşım 3: “exec()” Yöntemini Kullanarak node.js'de Alt Süreçler Oluşturma

exec() ” yöntemi önce bir kabuk oluşturur ve ardından cmdlet'i çalıştırır. Bu yöntem toplam dizinleri almak için kullanılacaktır.

Sözdizimi

child_process. yönetici ( cmdlet'i [ , seçenekler ] [ , geri çağırmak ] )

Verilen sözdiziminde:

  • cmdlet'i ” boşlukla ayrılmış bağımsız değişkenlerle yürütülecek komutu temsil eden bir dize alır.
  • seçenekler ”, “cwd”, “kodlama”, “kabuk” vb.'yi içerir.
  • geri çağırmak İşlem/işlem sona erdiğinde ” işlevi çağrılır.

Geri dönüş değeri

Bu yöntem bir ChildProcess örneğini alır.

Şimdi dizin sayısını listeleyen koda geçin:

yapı { yönetici } = gerekmek ( 'child_process' ) ;
yönetici ( 'dir | /c /v ''' bul , ( hata, stdout, stderr ) => {
eğer ( hata ) {
konsol. hata ( 'exec hatası : $ { hata } ' ) ;
geri dönmek ;
}
konsol. kayıt ( 'stdout' : Sayı Dizinler -> $ { stdout } ' ) ;
eğer ( stderr != '' )
konsol. hata ( 'stderr' : $ { stderr } ' ) ;
} ) ;

Bu kod parçacığına şunu ekleyin: ' çocuk_işlemi ” Alt süreçleri oluşturmak/yapmak için modül. Bundan sonra karşılaşılan istisnalar/hatalarla başa çıkın ve mevcut çalışma dizinindeki toplam dizin sayısını görüntüleyin.

Çıktı

Kodu çalıştırmak için aşağıdaki kodu yürütün:

düğüm execchild. js

Bu çıktıda, geçerli çalışma dizinindeki toplam dizinlerin görüntülendiği ima edilebilir.

Yaklaşım 4: execFile() Yöntemini Kullanarak node.js'de Alt İşlemler Oluşturma

İçinde ' execDosyası() ' yönteminde, hedef yürütülebilir dosya doğrudan yeni bir işlem biçiminde oluşturulur, bu nedenle '' yönteminden daha verimlidir. exec() ' yöntem. Bu yöntem, oluşturulan “ execchild.js ” dosyası yeni bir işlem şeklindedir.

Sözdizimi

child_process. execDosyası ( dosya adı [ , argümanlar ] [ , seçenekler ] [ , geri çağırmak ] )

Verilen sözdiziminde:

  • dosya adı ”, yürütülecek dosyanın adını veya yolunu temsil eden bir dize alır.
  • argümanlar ” dize argümanları listesine karşılık gelir.
  • seçenekler ”, “cwd”, “kodlama”, “kabuk” vb.'yi içerir.
  • geri çağırmak İşlem bittiğinde ” fonksiyonu çağrılır. İşlev argümanları hata, stdout vb. olabilir.

Geri dönüş değeri

Bu yöntem aynı zamanda bir ChildProcess örneğini de alır.

Şimdi, hedef yürütülebilir dosyayı yeni bir işlem olarak oluşturan aşağıdaki kodu göz önünde bulundurun:

yapı { execDosyası } = gerekmek ( 'child_process' ) ;
yapı X = execDosyası ( 'düğüm' , [ 'execchild.js' ] ,
( hata, stdout, stderr ) => {
eğer ( hata ) {
fırlatmak hata ;
}
konsol. kayıt ( stdout ) ;
} ) ;

Bu kod satırlarına dayanarak aşağıdaki adımları uygulayın:

  • Aşağıdakileri dahil etmek için tartışılan prosedürü tekrarlayın: çocuk_işlemi ” modülü.
  • Bir sonraki adımda “ execDosyası() Belirtilen yürütülebilir dosyayı (önceki yaklaşımda ele alınan) yeni bir süreç olarak üreten ve böylece çalışma dizinindeki toplam dizinleri listeleyen yöntem.

Çıktı

Kodu çalıştırmak için aşağıdaki cmdlet'i yürütün:

düğüm yürütme dosyası. js

Bu sonuçta, belirtilen yürütülebilir dosyanın oluşturulduğu ve dizin sayısının görüntülendiği doğrulanabilir.

Çözüm

Node.js'deki alt süreçler “ yumurtlama() ” yöntemi, “ çatal() ” yöntemi, “ exec() ” yöntemi veya “ execDosyası() ' yöntem. Bu yaklaşımlar sırasıyla alt süreci oluşturur, ebeveyn-çocuk süreç iletişimini etkinleştirir veya geçerli çalışma dizinindeki dizinleri listeler (doğrudan veya hedef yürütülebilir dosyayı oluşturarak).