আপনার যদি সাধারণ মামলার চেয়ে বেশি জটিল কেসটি হ্যান্ডেল করা যায় না ``
, তবে দেখুন Kernel.spawn()
। বাহ্যিক কমান্ড কার্যকর করতে এটি স্ট্যান্ড রুবি দ্বারা সরবরাহ করা সবচেয়ে সাধারণ / পূর্ণ-বৈশিষ্ট্যযুক্ত বলে মনে হয়।
আপনি এটি ব্যবহার করতে পারেন:
- প্রক্রিয়া গ্রুপ তৈরি করুন (উইন্ডোজ)।
- ফাইলগুলি / একে অপরকে ত্রুটি পুনঃনির্দেশিত, আউট করা।
- env vars সেট করুন, umask।
- কমান্ড কার্যকর করার আগে ডিরেক্টরি পরিবর্তন করুন।
- সিপিইউ / ডেটা / ইত্যাদির জন্য সংস্থান সীমা নির্ধারণ করুন।
- অন্যান্য উত্তরের সাথে অন্য বিকল্পগুলির সাহায্যে করা যেতে পারে এমন সমস্ত কিছু করুন, তবে আরও কোড সহ।
রুবি ডকুমেন্টেশন যথেষ্ট উদাহরণ রয়েছে:
env: hash
name => val : set the environment variable
name => nil : unset the environment variable
command...:
commandline : command line string which is passed to the standard shell
cmdname, arg1, ... : command name and one or more arguments (no shell)
[cmdname, argv0], arg1, ... : command name, argv[0] and zero or more arguments (no shell)
options: hash
clearing environment variables:
:unsetenv_others => true : clear environment variables except specified by env
:unsetenv_others => false : dont clear (default)
process group:
:pgroup => true or 0 : make a new process group
:pgroup => pgid : join to specified process group
:pgroup => nil : dont change the process group (default)
create new process group: Windows only
:new_pgroup => true : the new process is the root process of a new process group
:new_pgroup => false : dont create a new process group (default)
resource limit: resourcename is core, cpu, data, etc. See Process.setrlimit.
:rlimit_resourcename => limit
:rlimit_resourcename => [cur_limit, max_limit]
current directory:
:chdir => str
umask:
:umask => int
redirection:
key:
FD : single file descriptor in child process
[FD, FD, ...] : multiple file descriptor in child process
value:
FD : redirect to the file descriptor in parent process
string : redirect to file with open(string, "r" or "w")
[string] : redirect to file with open(string, File::RDONLY)
[string, open_mode] : redirect to file with open(string, open_mode, 0644)
[string, open_mode, perm] : redirect to file with open(string, open_mode, perm)
[:child, FD] : redirect to the redirected file descriptor
:close : close the file descriptor in child process
FD is one of follows
:in : the file descriptor 0 which is the standard input
:out : the file descriptor 1 which is the standard output
:err : the file descriptor 2 which is the standard error
integer : the file descriptor of specified the integer
io : the file descriptor specified as io.fileno
file descriptor inheritance: close non-redirected non-standard fds (3, 4, 5, ...) or not
:close_others => false : inherit fds (default for system and exec)
:close_others => true : dont inherit (default for spawn and IO.popen)