এখানে আমরা দেখব কিভাবে সিস্টেম কল ব্যবহার করে C++-এ একটি টাইমার (স্টপওয়াচ) ডিজাইন করা যায়। এখানে কোনো গ্রাফিক্স বা অ্যানিমেশন ব্যবহার করা হয়নি। টাইমার বলতে এখানে আপ-কাউন্টিং স্টপওয়াচ বোঝানো হয়েছে। ব্যবহৃত সিস্টেম কলগুলো হলো:
- sleep(n) — প্রোগ্রামকে n সেকেন্ডের জন্য স্লিপ বা নিদ্রাবস্থায় রাখে।
- system() — সিস্টেম কমান্ড এক্সিকিউট করতে ব্যবহৃত হয়, কমান্ডটি আর্গুমেন্ট হিসেবে পাস করা হয়।
উদাহরণ কোড
#include <iomanip>
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
int hrs = 0;
int mins = 0;
int sec = 0;
void showClk() {
system("clear"); // Windows-এ "cls", Linux/Mac-এ "clear"
cout << setfill(' ') << setw(55) << " TIMER \n";
cout << setfill(' ') << setw(66) << " --------------------------------------\n";
cout << setfill(' ') << setw(29);
cout << "| " << setfill('0') << setw(2) << hrs << " Hours | ";
cout << setfill('0') << setw(2) << mins << " Minutes | ";
cout << setfill('0') << setw(2) << sec << " Seconds |" << endl;
cout << setfill(' ') << setw(66) << " --------------------------------------\n";
}
void systemCallTimer() {
while (true) {
showClk();
sleep(1);
sec++;
if (sec == 60) {
mins++;
if (mins == 60) {
hrs++;
mins = 0;
}
sec = 0;
}
}
}
int main() {
systemCallTimer();
return 0;
}
কিভাবে কাজ করে
showClk()ফাংশনটি কনসোল ক্লিয়ার করে এবং বর্তমান সময় (ঘন্টা, মিনিট, সেকেন্ড) ফরম্যাট করে প্রদর্শন করে।systemCallTimer()ফাংশনটি একটি ইনফিনিট লুপে চলে। প্রতি সেকেন্ডেsleep(1)কল করে ১ সেকেন্ড অপেক্ষা করে, তারপর সেকেন্ড বাড়ায়। ৬০ সেকেন্ড হলে মিনিট বাড়ায়, ৬০ মিনিট হলে ঘন্টা বাড়ায়।main()থেকেsystemCallTimer()কল করা হয়।
নোট
উইন্ডোজে system("cls") এবং লিনাক্স/ম্যাক-এ system("clear") ব্যবহার করতে হয়। <unistd.h> হেডার লিনাক্স/ইউনিক্স সিস্টেমের জন্য প্রয়োজনীয়। উইন্ডোজে <windows.h> এবং Sleep(1000) (মিলিসেকেন্ডে) ব্যবহার করা ভালো।
আউটপুট
কনসোলে একটি রানিং টাইমার দেখাবে যা প্রতি সেকেন্ড আপডেট হয়: | 00 Hours | 00 Minutes | 00 Seconds | আকারে।