GNU/Linux >> Belajar Linux >  >> Linux

Apa yang setara dengan Posix popen() di Win32 API?

MSDN menjelaskan bagaimana Anda melakukan apa yang popen lakukan dengan menggunakan Windows API di Pipe Handle Inheritance . Di sini ia memberikan contoh yang terdokumentasi dengan baik. Levelnya jauh lebih rendah daripada _popen fungsi yang ditemukan di pustaka runtime yang ditautkan oleh Jason, tetapi menggunakan API Win32 secara eksklusif.


Sayangnya itu tidak terlalu mudah.

Anda perlu membuat pipa menggunakan fungsi win32 (CreatePipe), maka biasanya Anda perlu menduplikasi ujung pipa (DuplicateHandle) yang Anda berikan ke subproses untuk memungkinkannya diwariskan, jika tidak maka tidak akan dan karenanya tidak dapat digunakan.

Kemudian Anda perlu membuat proses menggunakan CreateProcess (yang membutuhkan banyak penunjuk struktur, termasuk STARTUPINFO), dan meneruskan STARTUPINFO pegangan yang telah Anda gandakan sebagai stdout-nya.

Kemudian Anda dapat membaca dari ujung pipa pembacaan (ReadFile dll) hingga Anda mencapai eof, lalu Anda perlu membersihkannya dengan menutup semua berbagai pegangan win32.


Anda dapat memanggil _popen jika Anda sedang menulis aplikasi konsol. Untuk informasi selengkapnya, lihat dokumentasi di situs MSDN:http://msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx


Linux
  1. Apa persamaan Linux dengan jeda DOS?

  2. Apa yang dimaksud dengan POSIX?

  3. Apa yang setara dengan /proc/cpuinfo di FreeBSD v8.1?

  1. Apa yang setara dengan getch() &getche() di Linux?

  2. Apa yang setara dengan Win32 API di linux?

  3. Apa yang setara dengan Unix/Linux dari I/O Terdaftar?

  1. Apa yang setara dengan perintah updatedb Linux untuk Mac?

  2. Apa yang setara dengan perintah File Linux untuk windows?

  3. Apa arti pipa linux | melakukan?