GNU/Linux >> Belajar Linux >  >> Linux

Saat menggunakan os.execlp, mengapa `python` membutuhkan `python` sebagai argv[0]

Saat python dijalankan, ia membuat sys.argv untukmu. Nilai dalam daftar itu berbasis pada argumen yang diteruskan oleh sistem operasi, tetapi berhenti sys.executable nilai dari daftar itu.

Dengan kata lain, ketika Python dipanggil, itu menetapkan sys.argv untuk semuanya tetapi dapat dieksekusi sendiri .

Saat Anda memanggil baru dapat dieksekusi melalui os.execlp() , Anda masih perlu menyertakan Python karena itulah yang dapat dieksekusi yang akan dijalankan oleh OS. Dua nilai pertama dari apa yang Anda berikan ke os.execlp() masih diperlukan, apa pun yang Anda temukan di sys.argv nanti.


Python kedua adalah nama untuk python, bisa berupa string apa saja, tetapi harus ada.

Lihat paragraf kedua dari http://docs.python.org/3/library/os.html?highlight=os.exec#process-management:

Berbagai fungsi exec* mengambil daftar argumen untuk program baru yang dimuat ke dalam proses. Dalam setiap kasus, argumen pertama ini diteruskan ke program baru sebagai namanya sendiri, bukan sebagai argumen yang mungkin diketik pengguna pada baris perintah. Untuk pemrogram C, ini adalah argv[0] yang diteruskan ke main() program. Misalnya, os.execv('/bin/echo', ['foo', 'bar']) hanya akan mencetak bilah pada keluaran standar; foo tampaknya akan diabaikan.


Linux
  1. Mengapa $LD_LIBRARY_PATH saya tidak disetel saat menggunakan layar dengan bash?

  2. Penggunaan / saat menggunakan cd

  3. Mengapa menggunakan innodb_file_per_table?

  1. Mengapa Semua Orang Menggunakan Docker?

  2. Cara Melacak Skrip Python menggunakan trace.py

  3. REJECT vs DROP saat menggunakan iptables

  1. Dapatkan delta mouse menggunakan Python! (di Linux)

  2. lokasi file sementara saat menggunakan tmpfile() di C

  3. perintah tidak ditemukan saat menggunakan sudo