انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: ImanSystem در 22 تیر 1387، 12:38 ق‌ظ

عنوان: manual page
ارسال شده توسط: ImanSystem در 22 تیر 1387، 12:38 ق‌ظ
چطور میتونم برای دستوری که با c نوشتم help یا manual page یا info بسازم طوری که با اجرای دستور command --help یا man command یا info command قابل اجرا باشه.  در ضمن چطور میتونم برای اون دستور option و argument هایی هم تعریف کنم .
با تشکر  ;)
عنوان: پاسخ به: manual page
ارسال شده توسط: ImanSystem در 22 تیر 1387، 12:47 ق‌ظ
ضمنا اون دستور رو فقط مدیر سیستم بتونه اجرا کنه !
آیا روشی هست که بشه سورس کد دستوراتی که در /bin یا /sbin هستند رو به دست آورد ؟
عنوان: پاسخ به: manual page
ارسال شده توسط: علیرضا طالقانی در 22 تیر 1387، 06:45 ق‌ظ
ضمنا اون دستور رو فقط مدیر سیستم بتونه اجرا کنه !
آیا روشی هست که بشه سورس کد دستوراتی که در /bin یا /sbin هستند رو به دست آورد ؟
sudo apt-get source <package-name>
که البته همه ی برنامه ی هایی که در اون دوتا شاخه هستش!  ی اسم بسته ای داره دیگه! از اون اسم بسته می تونی به این روشی که گفتم برای واکشی ی سورس کد اش استفاده کنی! ولی خب این فقط سورس رو می گیره و نصب اش نمی کنه! برای نصب هم باید از سوئیچ compile-- در ادامه ب همون خط دستوری استفاده کنی!
فقط متوجه نشدم این سورس اش رو کجا می گذاره برات! شاید در همون محلی که pwd داره بهتنشون میده! ???
عنوان: پاسخ به: manual page
ارسال شده توسط: علیرضا طالقانی در 22 تیر 1387، 06:57 ق‌ظ
چطور میتونم برای دستوری که با c نوشتم help یا manual page یا info بسازم طوری که با اجرای دستور command --help یا man command یا info command قابل اجرا باشه.  در ضمن چطور میتونم برای اون دستور option و argument هایی هم تعریف کنم .
با تشکر  ;)
در این مورد هم! ببین!  اگه دقت کرده باشی! در تعریف تابع main از دوتا پارامتر ورودی میشه استفاده کرد! 
int main (int argc, char **argv)
اولی تعداد پارامتر هایی ی که وارد شده با برنامه (از طریق شل) و دومی ی آرایه که به ترتیب ورودی که ها رو شامل میشه!
نکته:: پارامتر های ورودی هم که با Space از هم جدا می شوند و از طریق خط فرمان! بعد از نام برنامه میشه یکی یکی نوشت اشون.
خب حالا وقتی برنامه باز میشه باید اولین کار ات این باشه که یکی یکی این ورودی ها رو بخونی و بررسی شون کنی!
برداشت آزاد::
اگه کسی پارامتر h- یا help-- رو وارد کرده بود!  به توجه به باقی ی قضایا! فقط راهنمایی که نوشته باید echo کنی بیرون!
اگه کسی پارامتر v- یا version-- رو وارد کرده بود!  به توجه به باقی ی قضایا! فقط شماره ی نسخه ی برنامه ات رو میدی به خروجی!
.
.
.
.
و الی آخر!
این دوتا رو مثلا زدم که متوجه عمومیت اشون بشی! سعی که پارامتر های عمومی رو معادل قرار بدی!  مثلا در پاسخ help بر نداری شماره نسخه بدی!
این ی روش استاندارد سازی هست که در آینده بتونی بسته هات رو به مخازن هم راه بدی! ;)

دانش بنده در همین حد بود!  انشالله دوستان کد نویسمون بیشتر برات توضیح خواهند داد! @};-
عنوان: پاسخ به: manual page
ارسال شده توسط: سعید رسولی در 22 تیر 1387، 09:24 ق‌ظ
صفحهٔ منوال(man page) بحثش فرق داره و توی فایل اجرایی یا سورس‌کد برنامه تعریف نمیشه. صفحات منوال توی دایرکتوری usr/share/man/ ذخیر میشن. مثلاً اگه فایل usr/share/man/man1/cp.1.gz/ رو از فشردگی خارج کنید، یه فایل متنی ساده بوجوپ میاد که فرمت خاصی داره(مثلاً شبیه html که فایلش متنی ساده هست اما فرمت‌بندی داره). این فرمت مخصوص man page هست که فکر کنم بر اساس فرمت groff یا troff هست. اگه همون فایل متنی (مثلا cp.1) رو باز کنید، یه چیزایی متوجه میشید. میتونید یه فایل شبیه همون بوجود بیارید فقط متن‌های دلخواه خودتون رو جایگزین کنید. بعد با اسم مثلا command.1 ذخیره کنید بعد gz ش کنید و توی پوشه usr/share/man/man1/ کپی کنید.
بهتره یه اسکریپت install برای برنامتون بنویسید که فایلهای مختلف رو سر جاشون کپی کنه. مثلا فایل باینری (یا همون فایل اجرایی دستور) رو توی usr/bin/ کپی کنه فایل منوال رو توی  usr/share/man/man1/ و ...
یا اصلاً اینکه می‌تونید براش بستهٔ deb درست کنید(فکر کنم با دستور dpkg-deb میشد)


به آرگومان‌ها و اوپشن‌های خط فرمان هم میتونید همونجوری که آقای طالقانی گفتن، دسترسی پیدا کنید.
البته کتابخانهٔ getopt امکانات بیشتری رو هم برای گرفتن اوپشن‌ها و آرگومان‌ها بهمون میده و اگه برنامه بخواد اوپشن‌ها و آرگومان های زیادی بتونه بگیره، کار آدم رو راحت‌تر میکنه.

عنوان: پاسخ به: manual page
ارسال شده توسط: ImanSystem در 22 تیر 1387، 10:51 ق‌ظ
ببخشید روشه دیگه ای به جز apt-get برای بدست اوردن سورس دستورات نیست ؟
خوب اگه بخوام دستور فقط در سطح دسترسی مدیریت سیستم اجرا بشه چکار کنم ؟
برای طراحی رابط دستوری مثل pppconfig از برنامه خاصی استفاده میکنند یا طریق کدهای c و assembly او رو طراحی کردن ؟ چطور ؟ 
عنوان: پاسخ به: manual page
ارسال شده توسط: سعید رسولی در 27 تیر 1387، 08:38 ق‌ظ
نقل‌قول
ببخشید روشه دیگه ای به جز apt-get برای بدست اوردن سورس دستورات نیست ؟

میتونید سرچ کنید و بسته tar.gz یا tar.bz2 سورس اون پکیج رو دانلود کنید.

نقل‌قول
خوب اگه بخوام دستور فقط در سطح دسترسی مدیریت سیستم اجرا بشه چکار کنم ؟
میتونید permissions رو تغییر بدید و صاحبش(owner) رو root کنید و فقط هم به صاحبش اجازهٔ اجراش رو بدید. مثلا توی ترمینال اینجوری:
chown root <your_command>
chmod 744 <your_command>
یا اینکه توی همون برنامه‌ای که باهاش این دستور رو تولید کردید، توی سورسش چک کنید کنید که اگه UID این کاربر صفر نبود، یه پیغام بده که مثلا You are not root to run this command و بعد خارج بشه. (روش دقیقش توی پایتون رو بلدم. اما توی C بلد نیستم البته مطمئنم که میشه.)

نقل‌قول
برای طراحی رابط دستوری مثل pppconfig از برنامه خاصی استفاده میکنند یا طریق کدهای c و assembly او رو طراحی کردن ؟ چطور ؟
اولاً که الآن دیگه به ندرت از زبانهای سطح پایین مثل اسمبلی استفاده می‌کنن، چون خیلی خیلی سخت‌تر هست نسبت به زبانهای میانی مثل C و زبانهای سطح بالا مثل جاوا و پایتون.

ثانیأ رابط pppconfig رو فکر می‌کنم به زبان C و به کمک کتابخونهٔ ncurses نوشتن. یعنی از ncurses.h استفاده کردن. این کتابخونه یک رابط شبه گرافیکی بوجو میاره، در ضمن جایگزین کتابخونه غیراستاندارد conio.h (که فقط هم توی dos قابل استفاده‌س) محسوب میشه.
البته این کتابخونه منحصر به C و ++C نیست. مثلا توی پایتون هم میشه از ماژول curses استفاده کرد.