'\" t .\" Title: compel .\" Manual: CRIU Manual .\" Source: criu 4.1.1 .\" Language: Persian .TH "COMPEL" "1" "07/29/2025" "criu 4\&.1\&.1" "CRIU Manual" .SH "نام (NAME)" compel \- اجرای کد انگل در داخل یک فرآیند دیگر .SH "خلاصه دستور (SYNOPSIS)" .sp \fBcompel\fR \fIhgen\fR [\fIoption\fR \&...] .sp \fBcompel\fR \fIplugins\fR [\fIPLUGIN_NAME\fR \&...] .sp \fBcompel\fR [\fI\-\-compat\fR] \fIincludes\fR | \fIcflags\fR | \fIldflags\fR .sp \fBcompel\fR [\fI\-\-compat\fR] [\fI\-\-static\fR] \fIlibs\fR .SH "توضیحات (DESCRIPTION)" .sp ابزار .B compel یک ابزار کاربردی برای اجرای کد دلخواه (که کد انگل یا parasite code نیز نامیده می‌شود) در بستر و زمینه یک فرآیند بیگانه دیگر است. کد انگل پس از کامپایل با پرچم‌های compel و بسته‌بندی، می‌تواند در زمینه تسک‌های دیگر اجرا شود. در حال حاضر تنها یک روش برای بارگذاری باینری انگل در تسک قربانی با استفاده از libcompel\&.a وجود دارد که هدر سی (c\-header) نامیده می‌شود. .SH "آرگومان‌ها (ARGUMENTS)" .SS "آرگومان‌های مکانی (Positional Arguments)" .PP \fBhgen\fR .RS 4 ایجاد یک فایل هدر از پرونده po.\& که باینری انگل است. .RE .PP \fBplugins\fR .RS 4 چاپ پلاگین‌های موجود. .RE .PP \fBldflags\fR .RS 4 چاپ فلگ‌های ldflags موجود برای compel هنگام پیوند دادن (link) کد انگل. .RE .PP \fBcflags\fR .RS 4 چاپ cflags در compel برای استفاده هنگام کامپایل کد انگل. .RE .PP \fBincludes\fR .RS 4 چاپ فهرست پوشه‌های پیش‌فرض include. .RE .PP \fBlibs\fR .RS 4 چاپ فهرست کتابخانه‌های ایستا یا پویا که compel می‌تواند با آن‌ها پیوند برقرار کند. .RE .SH "گزینه‌ها (OPTIONS)" .PP \fB\-f\fR, \fB\-\-file\fR \fIFILE\fR .RS 4 مسیر پرونده باینری \fIFILE\fR که .B compel باید آن را به یک هدر تبدیل کند. .RE .PP \fB\-o\fR, \fB\-\-output\fR \fIFILE\fR .RS 4 مسیر پرونده هدر \fIFILE\fR که compel باید هدر نهایی را در آن بنویسد. .RE .PP \fB\-p\fR, \fB\-\-prefix\fR \fINAME\fR .RS 4 تعیین پیشوند برای نام متغیرها. .RE .PP \fB\-l\fR, \fB\-\-log\-level\fR \fINUM\fR .RS 4 سطح پیش‌فرض گزارش‌گیری در compel. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 چاپ راهنمای استفاده و خروج. .RE .PP \fB\-V\fR, \fB\-\-version\fR .RS 4 چاپ شماره نسخه compel. .RE .SH "نمونه‌های کد منبع (SOURCE EXAMPLES)" .SS "کد انگل (Parasitic Code)" .sp \fB#include \fR .sp \fBint parasite_trap_cmd(int cmd, void *args);\fR // فراخوانی‌شده توسط ()compel_run_in_thread .sp \fBint parasite_daemon_cmd(int cmd, void *arg);\fR // فراخوانی‌شده توسط ()compel_rpc_call و ()compel_rpc_call_sync .sp \fBvoid parasite_cleanup(void);\fR // هنگام تخلیه انگل توسط ()compel_cure فراخوانی می‌شود .SS "کد آلوده‌کننده (Infecting code)" .sp کد انگل کامپایل شده و با استفاده از .B compel به یک هدر تبدیل می‌شود و در اینجا قرار می‌گیرد. .sp \fB#include \fR .sp \fB#include "parasite\&.h"\fR .sp مراحل زیر برای آلوده کردن فرآیند قربانی انجام می‌شوند: .sp .RS 4 .IP \(bu 2.3 توقف تسک: \fBint compel_stop_task(int pid);\fR .RE .sp .RS 4 .IP \(bu 2.3 آماده‌سازی دستگیره آلودگی: \fBstruct parasite_ctl *compel_prepare(int pid);\fR .RE .sp .RS 4 .IP \(bu 2.3 اجرای فراخوانی سیستمی: \fBint compel_syscall(ctl, int syscall_nr, long *ret, int arg \&...);\fR .RE .sp .RS 4 .IP \(bu 2.3 آلوده کردن قربانی: \fBint compel_infect(ctl, nr_thread, size_of_args_area);\fR .RE .sp .RS 4 .IP \(bu 2.3 درمان قربانی: \fBint compel_cure(ctl);\fR // اشاره‌گر ctl با این فراخوانی آزاد می‌شود .RE .sp .RS 4 .IP \(bu 2.3 ازسرگیری قربانی: \fBint compel_resume_task(pid, orig_state, state)\fR یا \fBint compel_resume_task_sig(pid, orig_state, state, stop_signo)\&.\fR // تابع ()compel_resume_task_sig می‌تواند در حالتی که قربانی در وضعیت متوقف است استفاده شود. مقدار stop_signo را می‌توان با فراخوانی ()compel_parse_stop_signo خواند. .RE .sp اشاره‌گر .B ctl باید با فراخوانی .B PREFIX_setup_c_header() همراه با ctl به عنوان آرگومان، با اطلاعات باینری پیکربندی شود. .B PREFIX آرگومانی است که هنگام فراخوانی hgen به گزینه .B \-p داده شده است؛ در غیر این صورت از نام پرونده استخراج می‌شود. .SH "مثال‌ها (EXAMPLES)" .sp برای تولید یک پرونده هدر (h.\&) از یک پرونده باینری انگل (po.\&) از دستور زیر استفاده کنید: .sp .nf compel hgen \-f parasite\&.po \-o parasite\&.h .fi .sp پرونده .I parasite\&.po با کامپایل کردن کد منبع انگل با فلگ‌های compel و لینک کردن آن با پلاگین‌های compel به دست می‌آید. .SH "نویسنده (AUTHOR)" .sp تیم توسعه CRIU\&.