Ini ialah arahan pmcpp yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
pmcpp - prapemproses mudah untuk Perintis Bersama Prestasi
SINOPSIS
pmcpp [-Prs] [-D nama[=nilai] ...] [-I dir ...] [dalam fail]
DESCRIPTION
pmcpp menyediakan pra-pemproses yang sangat mudah yang asalnya direka untuk memanipulasi
Fail Ruang Nama Metrik Prestasi (PMNS) untuk Performance Co-Pilot (PCP), tetapi kemudian
digeneralisasikan untuk menyediakan blok bersyarat, termasuk pemprosesan fail, arahan shell dalam talian
pelaksanaan dan penggantian makro untuk fail sewenang-wenangnya. Ia paling biasa digunakan secara dalaman
untuk memproses fail PMNS selepas pmLoadNameSpace(3) atau pmLoadASCIINameSpace(3) dipanggil
dan untuk pra-memproses fail konfigurasi untuk pmlogger(1).
Baris input dibaca daripada dalam fail (atau input standard jika dalam fail tidak dinyatakan), diproses
dan ditulis kepada output standard.
Semua ulasan gaya C dalam bentuk /* ... */ dilucutkan daripada aliran input.
Tiada makro yang dipratentukan untuk pmcpp walaupun makro boleh ditakrifkan pada arahan
baris menggunakan -D pilihan, di mana nama and nilai mesti mengikut peraturan yang sama seperti yang diterangkan
di bawah untuk #tentukan arahan.
pmcpp menerima arahan berikut dalam aliran input (seperti cpp(1)):
· #include "nama fail"
or
#include <nama fail>
Dalam kedua-dua kes laluan carian direktori untuk nama fail mencuba nama fail pertama, kemudian
direktori untuk baris arahan dalam fail (jika ada), diikuti dengan mana-mana direktori yang dinamakan dalam -I
hujah baris arahan, dan akhirnya $PCP_VAR_DIR/pmns direktori (yang terakhir adalah untuk
keserasian ke belakang dengan versi terdahulu pmcpp dan yang tersirat digunakan daripada
pmLoadASCIINameSpace(3)). #include arahan mungkin bersarang, sehingga kedalaman maksimum
5.
· #cangkang "arahan"
or
#cangkang 'arahan'
. shell arahan akan dilaksanakan dan output standard dimasukkan ke dalam strim
data yang akan diproses oleh pmcpp. Secara fungsional ini serupa dengan a #include
arahan, kecuali baris input dibaca daripada a arahan bukannya fail. The #cangkang
arahan paling berguna untuk memasukkan atau mengecualikan #tentukan or #undef berdasarkan arahan
pada logik masa larian dalam arahan.
· #tentukan nama nilai
or
#tentukan nama "nilai"
or
#tentukan nama 'nilai'
Mentakrifkan nilai untuk makro nama yang mestilah nama gaya C yang sah, jadi terkemuka
abjad atau garis bawah diikuti dengan sifar atau lebih abjad angka atau garis bawah. nilai
adalah pilihan (dan lalai kepada rentetan kosong). Tiada mekanisme melarikan diri watak,
tetapi sama ada petikan tunggal atau petikan berganda boleh digunakan untuk mentakrifkan a nilai dengan istimewa
aksara atau ruang putih mendatar terbenam (tiada baris baharu).
· #undef nama
Mengalih keluar definisi makro, jika ada, untuk nama.
· #ifdef nama
...
#endif
or
#ifndef nama
...
#endif
Garisan yang disertakan akan dilucutkan atau disertakan, bergantung jika makro nama is
ditakrifkan atau tidak.
· #selamat
Dalam #ifdef or #ifndef blok, #selamat boleh digunakan untuk mengehadkan baris untuk disertakan jika
syarat ``jika'' sebelumnya adalah palsu.
Penggantian makro dicapai dengan memecahkan aliran input kepada perkataan yang dipisahkan oleh putih
ruang atau aksara yang tidak sah dalam nama makro, iaitu bukan abjad angka dan bukan
garis bawah. Setiap perkataan disemak dan jika ia sepadan dengan nama makro, perkataan itu digantikan dengan
nilai makro, jika tidak perkataan itu tidak berubah.
Biasanya terdapat satu baris keluaran untuk setiap baris input, walaupun baris itu mungkin kosong jika
teks telah dilucutkan kerana pengendalian ulasan atau arahan bersyarat.
Apabila terdapat perubahan dalam aliran input, baris output tambahan dijana daripada
bentuk:
# lineno "nama fail"
untuk menunjukkan berikutan baris keluaran sepadan dengan nombor baris lineno daripada input
fail nama fail.
. -P hujah menyekat penjanaan garis penanda garis ini.
. -s argumen mengubah gaya input yang diharapkan daripada C-like kepada shell-like (di mana # ialah a
awalan komen). Ini memaksa perubahan berikut masuk pmcpp tingkah laku:
· Aksara awalan kawalan berubah daripada # kepada %, Jadi %termasuk sebagai contoh.
· Tiada pelucutan ulasan dilakukan.
Untuk menyediakan kawalan yang lebih baik terhadap pengembangan makro, -r pilihan mengehadkan penggantian makro kepada
perkataan yang sesuai dengan pola #nama atau #{nama} atau jika -s ditentukan, maka %nama atau
%{nama}. Dalam mod ini, makro nama sahaja dalam aliran input tidak akan diperluaskan,
namun dalam garis kawalan (seperti #ifdef) makro nama sepatutnya muncul bersendirian tanpa
aksara awalan atau pendakap kerinting (rujuk CONTOH di bawah).
penting cpp(1) ciri-ciri yang tidak disokong oleh pmcpp termasuk:
· Makro dengan parameter - yang pmcpp makro hanya menyokong rentetan tanpa parameter
penggantian.
· #jika expr
...
#endif
· Penggunaan bersarang #ifdef or #ifndef.
· Menanggalkan ulasan gaya C++, seperti dalam // komen.
· Pemulihan ralat - ralat pertama yang dihadapi oleh pmcpp akan membawa maut.
· cpp(1) pilihan baris arahan seperti -o, -W, -U, dan -x.
CONTOH
- ─────┐
│Perintah: pmcpp │
- ─────┤
│Input │ Output │
├───────────────────────┼──────—─── ─ ─────┤
│ │ # 1 "" │
│#define MYDOMAIN 27 │ │
│ │ │
│akar { │ akar { │
│ foo MYDOMAIN:0:0 │ foo 27:0:0 │
│} │ } │
- ─────┘
Untuk contoh berikut, fail kekerapan mengandungi baris:
%define dk_freq 1minit
%define cpu_freq '15 saat'
- ───────── ─────────────────────┐
│Perintah: pmcpp -rs │
- ───────── ─────────────────────┤
│Input │ Output │
├──────────────────────────────────┼────────────── ─────────────────────┤
│# dapatkan frekuensi pembalakan │ # dapatkan frekuensi pembalakan │
│# cth. makro dk_freq │ # cth. dk_freq makro │
│%termasuk "frekuensi" │ │
│ │ │
│log wajib pada %dk_freq { │ log wajib pada 1minit { │
│ cakera.dev │ cakera.dev │
│} │ } │
│ │ │
│# nota no % untuk want_cpu di sini │ # nota no % untuk want_cpu di sini │
│%ifdef mahu_cpu │ │
│%define cpu_pfx 'kernel.all.cpu.' │ │
│log wajib pada %cpu_freq { │ │
│ %{cpu_pfx}pengguna │ │
│ %{cpu_pfx}sys │ │
│} │ │
│%endif │ │
└──────────────────────────────────┴────────────── ─────────────────────┘
- ───────── ─────────────────────┐
│Perintah: pmcpp -rs -Dwant_cpu │
- ───────── ─────────────────────┤
│Input │ Output │
├──────────────────────────────────┼────────────── ─────────────────────┤
│# dapatkan frekuensi pembalakan │ # dapatkan frekuensi pembalakan │
│# cth. makro dk_freq │ # cth. dk_freq makro │
│%termasuk "frekuensi" │ │
│ │ │
│log wajib pada %dk_freq { │ log wajib pada 1minit { │
│ cakera.dev │ cakera.dev │
│} │ } │
│ │ │
│# nota no % untuk want_cpu di sini │ # nota no % untuk want_cpu di sini │
│%ifdef mahu_cpu │ │
│%define cpu_pfx 'kernel.all.cpu.' │ │
│log wajib pada %cpu_freq { │ log wajib pada 15 saat { │
│ %{cpu_pfx}pengguna │ kernel.all.cpu.user │
│ %{cpu_pfx}sys │ kernel.all.cpu.sys │
│} │ } │
│%endif │ │
└──────────────────────────────────┴────────────── ─────────────────────┘
PCP PERSEKITARAN
Pembolehubah persekitaran dengan awalan PCP_ digunakan untuk meparameterkan fail dan direktori
nama yang digunakan oleh PCP. Pada setiap pemasangan, fail /etc/pcp.conf mengandungi nilai-nilai tempatan
untuk pembolehubah ini. The $PCP_CONF pembolehubah boleh digunakan untuk menentukan alternatif
fail konfigurasi, seperti yang diterangkan dalam pcp.conf(5).
Gunakan pmcpp dalam talian menggunakan perkhidmatan onworks.net