ايران ويج

نسخه‌ی کامل: چطوری یه wrapper بنویسم ؟ (سی در لینوکس)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من یه برنامه دارم که یه پارامتر به عنوان ورودی میگیره و خروجی میده و با یه پیغام بسته میشه..
مثلا یه همچنین ورودی: File -info Alireza/.
حالا من میخوام خروجی دستور بالا رو بگیرم و فقط اون مقدارهایی که لازم دارم و نمایش بدم، چی کار باید بکنم؟

پ.ن: من تو فکرم بود که از pipe استفاده کنم ولی نمیدونم درسته یا نه..
مرسی از راهنمایتون
سلام

کاری که میخوایی بکنی یکی از کارهای روزمره ای هست که توی لینوکس انجام میشه؛
باا wrapper هم میتونی انجام بدی اما یادت باشه که قابلیت جابجایی این کمه؛ چون احتیاج به کامپایل کدت و تزریق و .. هست نمیتونی کدت رو روی تمام سیستم ها به درستی اجرا کنی و ..


من توصیه ام پایپ کردن هست؛ اگه بلدی که هیچی ولی اگه بلد نیستی نمونه خروجیت رو بذار و بگو کدوم قسمت هاش رو میخوایی تا با هم پیش بریم و جداش کنیم
نقل قول: کاری که میخوایی بکنی یکی از کارهای روزمره ای هست که توی لینوکس انجام میشه؛

یعنی چی؟ چطور ؟ میشه یه مثال بزنی ؟

نقل قول: باا wrapper هم میتونی انجام بدی اما یادت باشه که قابلیت جابجایی این کمه؛ چون احتیاج به کامپایل کدت و تزریق و .. هست نمیتونی کدت رو روی تمام سیستم ها به درستی اجرا کنی و ..

رپر مگه تزریق میشه ؟ اگه زحمتی نیست که توضیح میدی که کلا چطوری یه رپر مینویسن ؟ خیلی ممنونت میشم

نقل قول: من توصیه ام پایپ کردن هست؛ اگه بلدی که هیچی ولی اگه بلد نیستی نمونه خروجیت رو بذار و بگو کدوم قسمت هاش رو میخوایی تا با هم پیش بریم و جداش کنیم

خیلی ممنون سعی ام رو میکنم اگه به مشکل خوردم حتما ازتون کمک میگیرم قلب عشق - بهینه شده برای ورژن جدید
نقل قول: یعنی چی؟ چطور ؟ میشه یه مثال بزنی ؟

مثلا خروجیمون اینه:

کد php:
9.salam
8.man khubam va
7.u chetiori 

کلمه دوم از خط دوم رو میخواییم,
کد php:
echo -"9.salam\n8.man khubam va\n7.u chetiori" sed -ne '2p'cut -d" " -f2 

یا همچنین کارهای مشابه ای و . .


خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید راهای بهتری هم هستا، ابن مثال فقط واسه این بود که بگم چنین چیزایی میشه

-------------

نقل قول: رپر مگه تزریق میشه ؟ اگه زحمتی نیست که توضیح میدی که کلا چطوری یه رپر مینویسن ؟ خیلی ممنونت میشم

خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید شاید من بد متوجه شدم؛ شما منظورتون از wrapper چی بود؟!
الان فرض کنید من یه برنامه c نوشتم وکامپایلش کردم و با تایع  put  خروجی چاپ میکنم! اینو چطوری میخوایی wrapper کنیش؟!
نقل قول: الان فرض کنید من یه برنامه c نوشتم وکامپایلش کردم و با تایع  put  خروجی چاپ میکنم! اینو چطوری میخوایی wrapper کنیش؟!


خب این دقیقا سوالی که دنبال جوابش هستم "چطوری یه رپر بنویسم؟" اما حدس میزنم که با fork پروسه میسازم و execv برنامه اجرا میکنم و خروجی رو میگیرم و نمایش میدم (البته نمیتونم اینو پیاده سازی کنم فقط تو ذهنم هست) یا راه دیگه ای که به ذهنم رسید استفاده از روش های ارتباط فرآیندی هست که پایپ به نظرم نسبت به سوکت، اشتراک حافظه بهترین گزینه هست
wrapper کردن یک برنامه در لینوکس به این شکل هست که یک فایل so (همون dll در ویندوز) ایحاد میکنی؛ و توابع استاندار رو به شرطی که به صورت دینامیکی لود شده باشند (مشابه IAT با ویندوز) ؛ باز نویسی میکنی؛ و اون so رو در فضای برنامه قرار میدی (شبیه به اینجکت در ویندوز)؛ و بعد ورودی به تابع اصلی سرازیر میشه به تابع wrapper شده شما و . . .

---------
شما هر دو تا برنامه واسه خودتون هست؟
چون من از سوالتون اینطور متوجه شدم که یه برنامه کامپایل شده دارید و حالا میخوایید یه برنامه دیگه بنویسید و از خروجی اون قبلی استفاده کنید و . . .

چون اگه هردو واسه خودتون نباشه که حافظه اشتراکی معنایی نداره اینجا!!!!!!!!!!!