selamat malam sobat TI di seluruh pelosok negeri yang indah ini. kembali lagi dengan saya nanda ricky, tapi sekarang saya memliki sebutan baru yang bisa sahabat semua gunakan untuk memanggil saya yaitu agam aceh. Nah malam ini agam mau membantu teman-teman semua ni yang pingin belajar lebih lanjut tentang pemograman pada linux atau sistem operasi. yah kali ini saya mau membantu sahabat semua dengan memberi sedikit pengetahuan tentang Filesystem in Userspace atau bisa disebut FUSE.
Fuse merupakan filesystem buatan kita sendiri yang aturannya itu terserah kepada pembuat fuse itu sendiri, ini berarti yang buat fuse bisa menjaga keamanan datanya sendiri.
Saya ngerti ni, pasti sahabat semua udah gak sabaran ni mau tahu gimana cara buat fuse, bener kan? hehehe. Sabar dong ni juga udah mau masuk ke intinya sob. Pertama ni kita harus punya codingan fuse yang lengkap atau pure. Saya punya ni dan saya berbaik hati mau membagikan kepada teman-teman semua. baikan kan saya? hehehe
Tapi sebelum saya membagi codingan saya mau ngasih tau ni kalau saya mau membuat fuse yang dimana pada direktori fuse nya itu terdapat file yang bisa di copy, tetapi, nah ada tetapinya ni. tetapi file yang di copy itu bakal bisa di buka atau di jalanin sedangkan file yang jadi objek pengcopyan gak bisa di buka lagi alias di kunci akses buat ngebukanya.
ngertikan maksud soalnya?
oh iya sebelum mulai sobat harus pasrtikan sudah menginstal fusenya, ni agam bagiin cara install fuse :
langsung aja ni saya bagi codingan yang pure :
#ifdef linux
/* For pread()/pwrite() */
#define _XOPEN_SOURCE 500
#endif
#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>
static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;
res = lstat(path, stbuf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_readlink(const char *path, char *buf, size_t size)
{
int res;
res = readlink(path, buf, size - 1);
if(res == -1)
return -errno;
buf[res] = '\0';
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
DIR *dp;
struct dirent *de;
int res = 0;
dp = opendir(path);
if(dp == NULL)
return -errno;
while((de = readdir(dp)) != NULL) {
res = filler(h, de->d_name, de->d_type);
if(res != 0)
break;
}
closedir(dp);
return res;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
res = mknod(path, mode, rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mkdir(const char *path, mode_t mode)
{
int res;
res = mkdir(path, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_unlink(const char *path)
{
int res;
res = unlink(path);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rmdir(const char *path)
{
int res;
res = rmdir(path);
if(res == -1)
return -errno;
return 0;
}
static int xmp_symlink(const char *from, const char *to)
{
int res;
res = symlink(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
res = rename(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_link(const char *from, const char *to)
{
int res;
res = link(from, to);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
res = chmod(path, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_chown(const char *path, uid_t uid, gid_t gid)
{
int res;
res = lchown(path, uid, gid);
if(res == -1)
return -errno;
return 0;
}
static int xmp_truncate(const char *path, off_t size)
{
int res;
res = truncate(path, size);
if(res == -1)
return -errno;
return 0;
}
static int xmp_utime(const char *path, struct utimbuf *buf)
{
int res;
res = utime(path, buf);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
res = open(path, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
fd = open(path, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size,
off_t offset)
{
int fd;
int res;
fd = open(path, O_WRONLY);
if(fd == -1)
return -errno;
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_statfs(struct fuse_statfs *fst)
{
struct statfs st;
int rv = statfs("/",&st);
if(!rv) {
fst->block_size = st.f_bsize;
fst->blocks = st.f_blocks;
fst->blocks_free = st.f_bavail;
fst->files = st.f_files;
fst->files_free = st.f_ffree;
fst->namelen = st.f_namelen;
}
return rv;
}
static int xmp_release(const char *path, int flags)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
(void) path;
(void) flags;
return 0;
}
static int xmp_fsync(const char *path, int isdatasync)
{
/* Just a stub. This method is optional and can safely be left
unimplemented */
(void) path;
(void) isdatasync;
return 0;
}
static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
.readlink = xmp_readlink,
.getdir = xmp_getdir,
.mknod = xmp_mknod,
.mkdir = xmp_mkdir,
.symlink = xmp_symlink,
.unlink = xmp_unlink,
.rmdir = xmp_rmdir,
.rename = xmp_rename,
.link = xmp_link,
.chmod = xmp_chmod,
.chown = xmp_chown,
.truncate = xmp_truncate,
.utime = xmp_utime,
.open = xmp_open,
.read = xmp_read,
.write = xmp_write,
.statfs = xmp_statfs,
.release = xmp_release,
.fsync = xmp_fsync
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}
itu dia codingan yang pure sekali. jadi karena soalnya yang diinginkan itu adalah fuse yang bisa kita copy filenya serta bisa dibuka copyannya maka tita gunakan beberapa fungsi yang perlu aja ni sob. ada beberapa yang perlu emg, sedangkan yang gak perlu di jadiin coment aja sob dan fungsinya di hapus aja.
jadi saya sudah siapkan codingan yang sudah jadi untuk dijalankan :
#ifdef linux
/* For pread()/pwrite() */
#define _XOPEN_SOURCE 500
#endif
#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>
static const char *dirpath ="/home/aceh/Documents/modul4/cekfuse/";
char alamat[1000];
static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = lstat(fpath, stbuf);
if (res == -1)
return -errno;
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
DIR *dp;
struct dirent *de;
int res = 0;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
dp = opendir(fpath);
if(dp == NULL)
return -errno;
while((de = readdir(dp)) != NULL)
{
res = filler(h, de->d_name, de->d_type);
if(res != 0)
break;
}
closedir(dp);
return res;
}
static int xmp_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = mknod(fpath, mode, rdev);
if(res == -1)
return -errno;
return 0;
}
static int xmp_mkdir(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = mkdir(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_rename(const char *from, const char *to)
{
int res;
char from1[1000];
char to1[1000];
res = rename(from1, to1);
if (res == -1)
return -errno;
return 0;
}
static int xmp_chmod(const char *path, mode_t mode)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = chmod(fpath, mode);
if(res == -1)
return -errno;
return 0;
}
static int xmp_open(const char *path, int flags)
{
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
res = open(fpath, flags);
if(res == -1)
return -errno;
close(res);
return 0;
}
static int xmp_read(const char *path, char *buf, size_t size, off_t offset)
{
int fd;
int res;
char fpath[1000];
sprintf(fpath, "%s%s", dirpath, path);
strcpy(alamat,path);
fd = open(fpath, O_RDONLY);
if(fd == -1)
return -errno;
res = pread(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static int xmp_write(const char *path, const char *buf, size_t size, off_t offset) //saat write file
{
int fd;
int res;
int res1;
char fpath[1000],temp1[1000];
sprintf(fpath, "%s%s", dirpath, path);
fd = open(fpath, O_WRONLY);
sprintf(temp1, "%s%s", dirpath, alamat);
res1 = chmod(temp1, 0000);
if(res1 == -1)
res1 = -errno;
if(fd == -1)
return -errno;
res = pwrite(fd, buf, size, offset);
if(res == -1)
res = -errno;
close(fd);
return res;
}
static struct fuse_operations xmp_oper = {
.getattr = xmp_getattr,
//.readlink = xmp_readlink,
.getdir = xmp_getdir,
.mknod = xmp_mknod,
.mkdir = xmp_mkdir,
//.symlink = xmp_symlink,
//.unlink = xmp_unlink,
//.rmdir = xmp_rmdir,
.rename = xmp_rename,
//.link = xmp_link,
.chmod = xmp_chmod,
//.chown = xmp_chown,
//.truncate = xmp_truncate,
//.utime = xmp_utime,
.open = xmp_open,
.read = xmp_read,
.write = xmp_write,
//.release = xmp_release,
//.fsync = xmp_fsync
};
int main(int argc, char *argv[])
{
fuse_main(argc, argv, &xmp_oper);
return 0;
}
itu dia codingannya sob. jadi untuk menjalankannya sebelumnya itu kita haru buat sebuah folder atau direktori yang akan di akses dan akan dibuat di folder tempat kita menyimpan folder fusenya. jadi maksudnya itu folder fuse itu bakal memiliki isi yang sama dengan isi di dalam folder yang kita akses, jadi yang sama itu hanya file didalemnya aja sob. jadi ini folder dan beserta isi nya yang sudah agam buat yang bakal di tampilkan juga di folder fusenya nanti atau bakal di mount ke folder fusenya nanti.
nah itu dia foldernya jadi karena sudah di alokasikan file dan foldernya maka kita langsung aja ni ke tahap pengeksekusian fusenya. jadi karena kita belajarnya di linux maka kita tidak bisa lepas dari yang namanya sebuah terminal, terminal kita gunakan hanya untuk menjalankan fuse atau menjalankan perintah permition untuk membuat fuse tersebut.
nah kta sudah masuk terminal dan meminta permition atau mengcompile untuk menjalankan fusenya formatnya adalah seperti ini :
gcc -Wall [nama file].c `pkg-config fuse --cflags --libs` -o [nama file]
Kemudian setelah itu kita membuat direktori fusenya agar bisa di akses. formatnya sbb : mkdir /tmp/fuse.
ada pertanyaan kenapa harus ada tmp? karena folder tmp sudah ada di computer atau super user jadi dia langsung dibaca dan folder fusenya bisa langsung di buat tidak harus chmod chmod ke tempat yang kita inginkan lagi.
Setelah kita buat direktorinya maka kita bisa eksekusi programnya :
Setelah kita eksekusi lanjut untuk mengeksplore fusenya dengan cara :
1. Akses computer yang ada di pc atau laptop
2. Buka folder tmp dan sudah ada folder fuse yang kita buat tadi.
3. Kita buka folder fuse dan sudah ada isinya yang berupa file yang sama seperti pada folder cekfuse yang kita alokasikan atau ingin kita mount tadi
4. copy salah satu file dan paste pada ttempat yang sama, maka file yang jadi objeck copyan tidak dapat di akses atau di buka isinya dan hanya file copyannya yang bisa di akses.
isinya sama bukan? jelas sama karna direktori yang kita akses adalah benar cekfuse.
kemudian itu adalah file yang sudah dicop.
itu adalah file objeck pengcopyan yang sudah di lock akses untuk membukanya dan yang selanjutnya adalah file copyannya.
setelah kita membuat fuse dan mengaplikasikan sesuai aturan yang kita mau tersebut maka ada pertanyaan lagi, apakah fusenya bisa kita hilangkan? bisa kita bisa menghapus isi fusenya tersebut agar fusenya tidak berjalan lagi.
dengan cara sperti ini :
1. kita harus masuk ke root atau super user.
2. kita umount dengan syntax : umount /tmp/fuse
3. kemudian cek pada folder fuse pasti sudah kosong.
itulah cara umount dan sudah selesai kita umount, inilah dia folder fuse tadi yang sudah kosong :
mungkin cuma segitu aja dulu yang bisa agam bagiin ke sobat semua semoga bermanfaat dan sobat dan sobat bisa belajar dengan mudah karena tutorial dari agam ini.
karena sudah selesai agam ucapin terima kasih sudah sabar dan mau menunggu lama tutorial-tutorial yang agam buat, dan juta agam minta maaf sebelumnya sepertinya agam bakal istirahat dulu untuk membagi tutorial yang lain, tapi tunggu aja pasti agam akan lanjutkan dengan tutorial yang lebih seru. selamat malam dan malam minggu sahabat agam serta jangan lupa BAHAGIA yaaa heheheh :D
Assalamualaikum wr. wb :)
28 November 2015
8 November 2015
Thread dan IPC bukan IPA, IPS dan IPC
oke baiklah teman-teman semua yang saya cintai dan selalu menyuport saya dari smping depan dan belakang, kalian luar biasa, Terima kasih..
sudah, sudah lupakan kegaringan saya, gak ada yang lucu dari itu tadi.
Baiklah teman-teman sekalian, siang ini saya mau berbagi sedikit tentang lanjutan postingan saya dua minggu atau tiga minggu yang lalu, tetapi saya minta maaf kalau yang saya bagikan ini ternyata gak nyambung sedikitpun sobat, jangan kecewa dulu yaaa? untuk mengobati rasa kecewa teman-teman saya mau bagiin sesuatu yang lebih keren teman-teman. mau tau apa? lanjutin terus ya teman-teman bacanya.
Saya hari ini mau berbagi bagaimana cara membuat thread, bingung kan apa itu thread? nah kalian googling dulu aja sobat thread itu apa sekalian saya langsung memberikan contoh dari program thread itu sendiri. Okelah kali ini saya mau membuat program yang bisa memutar musik di terminal hehehe bingung kan? oke, program nya ini tidak begitu sulit karena kita sudah memiliki template threadnya tetapi disini saya mau improvisasi sedikit dengan membuat pemutar musiknya itu dapat memutar, mengepause, melanjutkan, mengestop, keluar dari program tetapi tidak menghentikan musiknya yang berjalan. Gimana teman-teman? keren kan?
yah saya sudah mengerjakan progrmannya dan ini ada codingannya
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
pthread_t tid[7];
int t;
char lagu[10];
char ads[100];
void* playandcount(void *arg)
{
unsigned long i=0;
pthread_t id=pthread_self();
int iter;
if(pthread_equal(id,tid[1]))
{
system("clear");
printf("--Help\n");
printf("--List\n");
printf("--Play\n");
printf("--Pause\n");
printf("--Continue\n");
printf("--Stop\n");
printf("--Exit\n");
}
else if(pthread_equal(id,tid[2]))
{
system("clear");
chdir ("/home/aceh/Downloads/musik");
system("ls | grep .mp3");
}
else if(pthread_equal(id,tid[3]))
{
system("pkill mpg123");
system("clear");
snprintf(ads, sizeof(ads), "mpg123 /home/aceh/Downloads/musik%s",lagu);
system(ads);
}
else if(pthread_equal(id, tid[4]))
{
system("clear");
sleep(t);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id, tid[5]))
{
system("clear");
sleep(t);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[6]))
{
system("clear");
sleep(t);
system("pkill mpg123");
}
return NULL;
}
int main(void)
{
int flag=4;
system("clear");
while(flag!=0)
{
printf("--- Program Pemutar Lagu ---\n");
char comm[10];
int err=0;
scanf("%s",comm);
if (err!=0) printf("\ncan't create thread : [%s]", strerror(err));
else if (strcmp(comm,"help")==0 || strcmp(comm,"Help")==0) err=pthread_create(&(tid[1]), NULL, &playandcount, NULL);
else if (strcmp(comm,"list")==0 || strcmp(comm,"List")==0) err=pthread_create(&(tid[2]), NULL, &playandcount, NULL);
else if (strcmp(comm,"play")==0 || strcmp(comm,"Play")==0)
{
scanf("%s",lagu);
err=pthread_create(&(tid[3]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"pause")==0 || strcmp(comm,"Pause")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[4]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"continue")==0 || strcmp(comm,"Continue")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[5]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"stop")==0 || strcmp(comm,"Stop")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[6]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"exit")==0 || strcmp(comm,"Exit")==0) flag=0;
else printf("Wrong Input\n");
}
return 0;
}
dari codingan itu maka sebelum menjalankan program kita harus gcc terlebih dahulu dengan cara gcc -pthread -o nama_objek nama_program.c
setelah di gcc barulah kita eksekusi programnya dengan cara seperti biasa ./namaprogram
setelah di eksekusi akan keluar tampilan seperti yang diharapkan codingannya
nah, kan bingung mau ngapain? jadi disini saya sengaja buat kaya gini biar yang mainin mp3 saya ini cerdas sedikit, kalau buntu gini dia bisa meminta bantuan, nah bantuannya itu tinggal ketik "Help" saja nanti akan keluar menunya hehe
kan sudah keluar listnya, kitakan maunya memutar lagu tujuannya, oleh karena itu kita lihat dulu lagu apa aja yang ada di list tersebut, ketik "List" aja deh terus ihihihi
sudah keluar listnya kan, untuk menjalankannya kita tinggal ketik "Play(spasi)Nama_lagu.mp3" ingan untuk nama lagunya harus identik dengan yang ada di listnya tadi, seperti ini :
ya seperti itulah jalan programnya, nanti kalau mau ngelakuin apa lagi sesuaikan aja dengan menu yang ada kemudian ingat! untuk pause, lanjut, dan stop kalian harus memberi alokasi wktu berpa detik, maksudnya itu agar programnya itu ngepause, ngestop atau ngelanjutin lagunya lagi setelah beberapa detik sehabis detiknya berjalan.
hore selesaikan teman-teman, segitu aja ni yang bisa saya bagikan kepada teman-teman semua semoga kalian tetap solid dan tetap menjadi fans teraik di hidupku, love you my fans :D pantengin terus blog saya teman-teman, dua minggu atau tiga minggu kedepan bakal ada updaten lagi nih dari saya, sabar menunggu ya my fans hehe :D
sudah, sudah lupakan kegaringan saya, gak ada yang lucu dari itu tadi.
Baiklah teman-teman sekalian, siang ini saya mau berbagi sedikit tentang lanjutan postingan saya dua minggu atau tiga minggu yang lalu, tetapi saya minta maaf kalau yang saya bagikan ini ternyata gak nyambung sedikitpun sobat, jangan kecewa dulu yaaa? untuk mengobati rasa kecewa teman-teman saya mau bagiin sesuatu yang lebih keren teman-teman. mau tau apa? lanjutin terus ya teman-teman bacanya.
Saya hari ini mau berbagi bagaimana cara membuat thread, bingung kan apa itu thread? nah kalian googling dulu aja sobat thread itu apa sekalian saya langsung memberikan contoh dari program thread itu sendiri. Okelah kali ini saya mau membuat program yang bisa memutar musik di terminal hehehe bingung kan? oke, program nya ini tidak begitu sulit karena kita sudah memiliki template threadnya tetapi disini saya mau improvisasi sedikit dengan membuat pemutar musiknya itu dapat memutar, mengepause, melanjutkan, mengestop, keluar dari program tetapi tidak menghentikan musiknya yang berjalan. Gimana teman-teman? keren kan?
yah saya sudah mengerjakan progrmannya dan ini ada codingannya
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
pthread_t tid[7];
int t;
char lagu[10];
char ads[100];
void* playandcount(void *arg)
{
unsigned long i=0;
pthread_t id=pthread_self();
int iter;
if(pthread_equal(id,tid[1]))
{
system("clear");
printf("--Help\n");
printf("--List\n");
printf("--Play\n");
printf("--Pause\n");
printf("--Continue\n");
printf("--Stop\n");
printf("--Exit\n");
}
else if(pthread_equal(id,tid[2]))
{
system("clear");
chdir ("/home/aceh/Downloads/musik");
system("ls | grep .mp3");
}
else if(pthread_equal(id,tid[3]))
{
system("pkill mpg123");
system("clear");
snprintf(ads, sizeof(ads), "mpg123 /home/aceh/Downloads/musik%s",lagu);
system(ads);
}
else if(pthread_equal(id, tid[4]))
{
system("clear");
sleep(t);
system("pkill -STOP mpg123");
}
else if(pthread_equal(id, tid[5]))
{
system("clear");
sleep(t);
system("pkill -CONT mpg123");
}
else if(pthread_equal(id,tid[6]))
{
system("clear");
sleep(t);
system("pkill mpg123");
}
return NULL;
}
int main(void)
{
int flag=4;
system("clear");
while(flag!=0)
{
printf("--- Program Pemutar Lagu ---\n");
char comm[10];
int err=0;
scanf("%s",comm);
if (err!=0) printf("\ncan't create thread : [%s]", strerror(err));
else if (strcmp(comm,"help")==0 || strcmp(comm,"Help")==0) err=pthread_create(&(tid[1]), NULL, &playandcount, NULL);
else if (strcmp(comm,"list")==0 || strcmp(comm,"List")==0) err=pthread_create(&(tid[2]), NULL, &playandcount, NULL);
else if (strcmp(comm,"play")==0 || strcmp(comm,"Play")==0)
{
scanf("%s",lagu);
err=pthread_create(&(tid[3]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"pause")==0 || strcmp(comm,"Pause")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[4]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"continue")==0 || strcmp(comm,"Continue")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[5]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"stop")==0 || strcmp(comm,"Stop")==0)
{
scanf("%d",&t);
err=pthread_create(&(tid[6]), NULL, &playandcount, NULL);
}
else if (strcmp(comm,"exit")==0 || strcmp(comm,"Exit")==0) flag=0;
else printf("Wrong Input\n");
}
return 0;
}
dari codingan itu maka sebelum menjalankan program kita harus gcc terlebih dahulu dengan cara gcc -pthread -o nama_objek nama_program.c
setelah di gcc barulah kita eksekusi programnya dengan cara seperti biasa ./namaprogram
nah, kan bingung mau ngapain? jadi disini saya sengaja buat kaya gini biar yang mainin mp3 saya ini cerdas sedikit, kalau buntu gini dia bisa meminta bantuan, nah bantuannya itu tinggal ketik "Help" saja nanti akan keluar menunya hehe
kan sudah keluar listnya, kitakan maunya memutar lagu tujuannya, oleh karena itu kita lihat dulu lagu apa aja yang ada di list tersebut, ketik "List" aja deh terus ihihihi
sudah keluar listnya kan, untuk menjalankannya kita tinggal ketik "Play(spasi)Nama_lagu.mp3" ingan untuk nama lagunya harus identik dengan yang ada di listnya tadi, seperti ini :
ya seperti itulah jalan programnya, nanti kalau mau ngelakuin apa lagi sesuaikan aja dengan menu yang ada kemudian ingat! untuk pause, lanjut, dan stop kalian harus memberi alokasi wktu berpa detik, maksudnya itu agar programnya itu ngepause, ngestop atau ngelanjutin lagunya lagi setelah beberapa detik sehabis detiknya berjalan.
hore selesaikan teman-teman, segitu aja ni yang bisa saya bagikan kepada teman-teman semua semoga kalian tetap solid dan tetap menjadi fans teraik di hidupku, love you my fans :D pantengin terus blog saya teman-teman, dua minggu atau tiga minggu kedepan bakal ada updaten lagi nih dari saya, sabar menunggu ya my fans hehe :D
Langganan:
Komentar (Atom)






















