Rumah > pembangunan bahagian belakang > Golang > Adakah Perintah My Go Menerima Data daripada Paip?

Adakah Perintah My Go Menerima Data daripada Paip?

Mary-Kate Olsen
Lepaskan: 2024-11-05 03:27:02
asal
734 orang telah melayarinya

Is My Go Command Receiving Data from a Pipe?

Bagaimana untuk Menentukan sama ada Perintah Disambungkan dalam Go?

Apabila bekerja dengan input dan output dalam Go, selalunya perlu untuk menentukan sama ada arahan sedang disalurkan atau tidak. Paip membenarkan data dihantar daripada output satu proses ke input yang lain melalui paip Unix.

Sebagai contoh:

<code class="sh">cat test.txt | mygocommand # Piped
mygocommand # Not piped</code>
Salin selepas log masuk

Perbezaan ini boleh menjadi penting untuk menyesuaikan tingkah laku aplikasi anda .

Penyelesaian

Go menyediakan cara untuk menyemak sama ada stdin adalah disalurkan dengan menggunakan os.Stdin.Stat(). Berikut ialah contoh:

<code class="go">package main

import (
    "fmt"
    "os"
)

func main() {
    fi, _ := os.Stdin.Stat()

    if (fi.Mode() & os.ModeCharDevice) == 0 {
        fmt.Println("data is from pipe")
    } else {
        fmt.Println("data is from terminal")
    }
}</code>
Salin selepas log masuk

Apabila arahan disalurkan (seperti dalam contoh pertama), outputnya ialah:

data is from pipe
Salin selepas log masuk

Jika tidak, ia akan menjadi:

data is from terminal
Salin selepas log masuk

Cara ia berfungsi

The os.Stdin.Stat() fungsi mengembalikan objek FileInfo yang mengandungi maklumat tentang deskriptor fail stdin. Kaedah Mod() bagi FileInfo mengembalikan mod fail yang merangkumi maklumat tentang jenis fail. Jika mod yang dikembalikan termasuk bendera os.ModeCharDevice, ia menunjukkan bahawa fail itu ialah peranti aksara, seperti terminal. Jika tidak, ini menunjukkan bahawa fail itu ialah fail biasa atau paip.

Atas ialah kandungan terperinci Adakah Perintah My Go Menerima Data daripada Paip?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan