انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: amin-asa در 03 آبان 1391، 09:17 بظ
-
سلام دوستان عزیز :)
در این تاپیک به سوالات پایتون پاسخ داده می شود. البته من خودم تازه کارم امیدوارم دوستان برنامه نویس پاسخ بدن. \\:D/
لطفا فقط سوالات مربوط به زبان برنامه نویسی پایتون پرسیده شود.
با تشکر
-
با سلام
چند سوال:
۱.ماژول os توابعی به اسم fork و pipe داره کارایی این توابع چیه؟
اینم مثالی که من برای توابع pipe و fork پیدا کردم:
#!/usr/bin/python3
import os, signal
ServerReceive, ClientSend = os.pipe()
ClientReceive, ServerSend = os.pipe()
pid = os.fork()
print(pid)
if pid == 0:
while True:
data = os.read(ServerReceive, 1024)
data = b'Ni!\n' + data + b'\nNi!'
os.write(ServerSend, data)
else:
data = ['The Knights who say Ni!', 'Appear in the film "Monty Python and the Holy Grail" ']
for line in data:
os.write(ClientSend, line.encode())
print(os.read(ClientReceive, 1024))
os.kill(pid, signal.SIGTERM)
۲.fd یا file descriptor چی هست؟
۳. فرق توابع و کلاسهای زیر در چیه:
os.system - os.popen - subprocess.call - subprocess.Popen
-
os.fork یک پراسس جدید ایجاد میکنه و ادامه کدت در پراسس جدید اجرا میشه. نکته اینجاست که خروجی os.fork یا صفره یا پراسسآیدی. با چک کردن این مقدار توی خطوط بعدی میفهمی که افتادی توی پراسس جدید یا همچنان در کد بالادست هستی. تصور کن یک بالانسر یا یک توزیع کننده داری که هردرخواستی رو طی یک پراسس جدا میخواد اجرا کنه و خودش داخل یک لوپ درخواستها رو دریافت میکنه و یک پراسس جدید برای هرکدوم فورک میکنه حالا ادامه کدت که خارج از لوپ نوشته شده با چک کردن پراسسآیدی میسر میشه. یعنی وقتی پراسسایدی صفر نیست وارد لوپ نمیشی و کد مورد نظرت رو مینویسی.
امیدوارم قابل فهم توضیح داده باشم :)
-
توی سایت های غیر فنی تاپیک ها اینطوری اینجا می شن «همه عکس های فلان» یا مثلا «داستان های فلان» ولی توی سایت های لینوکس روش صحیح اینه که تاپیک ها بر اساس سوال ها اینجا بشن. یعنی هر سوال واضح و مشخص در یک تاپیک که بعدا هم بسته می شه. «همه سوالات یک تازه کار» و «همه سوال های پایتون» و ... شیوه مناسب برای فروم های لینوکسی نیستن.
اینجا جای پرسیدن مشکل و حل شدنش است و مراجعات بعدی احتمالی با سرچ به اون موضوع و در نتیجه بهتره تاپیک های «همیشه زنده» نداشته باشیم (: بازم انتخاب با شماست که دوست دارین انجمن کدوم طرفی بره (:
-
به طرف لینوکس بره بهتره! :)