最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

FTXUI 終端簡易音樂播放器

2023-07-13 01:13 作者:葉恩湖  | 我要投稿

這次我們來寫一個簡單的音樂播放器界面。它有一個輸入框,用戶填寫音樂文件的路徑,按下播放鍵,音樂就會開始播放,并且播放按鈕變成停止按鈕。按下停止按鈕,音樂停止,播放按鈕又會重新出現(xiàn)。

為此,我們會啟動一個新的進程用來播放音樂。用新進程播放音樂的好處就是,就算播放的時候什么都做不了,也不會影響到用戶界面的運行。用戶界面會繼續(xù)接收用戶的輸入和刷新界面。

那么,這次還會涉及一些多進程的知識。

首先我們要明確一點,“fork”函數(shù)在父進程和子進程中的返回值是不同的。在父進程中,“fork”返回新創(chuàng)建的子進程的進程PID,而在子進程中,“fork”返回0。所以,“pid”變量在父子進程中的值是不同的:在父進程中,它是子進程的“PID”;在子進程中,它是0。

這段代碼中,“PID”的初始值設(shè)為0,表示沒有子進程。當(dāng)?shù)谝淮吸c擊按鈕時,會調(diào)用“fork”生成一個子進程。在父進程中,“fork”返回的是子進程的PID,這個值被賦給pid變量;而在子進程中,“fork”返回的是0,這意味著此時的pid變量仍然是0。

進程相關(guān)的部分主要集中在“Button”的回調(diào)函數(shù)里。這個回調(diào)函數(shù)定義了當(dāng)用戶點擊按鈕時應(yīng)該執(zhí)行的操作。

如果用戶首次點擊按鈕,即“pid”為0,“fork”被調(diào)用并創(chuàng)建一個新的子進程。在子進程中,“E-X-E-C-L-P”函數(shù)被調(diào)用,它用于替換當(dāng)前進程的映像(即當(dāng)前正在執(zhí)行的程序)。在這個例子中,子進程的映像被替換為“MPG一二三”程序,并傳入File Name作為參數(shù),這就啟動了音樂播放。之后,按鈕的標(biāo)簽從"Play"變?yōu)?#34;Stop"。

如果用戶再次點擊按鈕(即pid 不等于 0,也就是已經(jīng)有一個子進程在運行),則“kill”函數(shù)被調(diào)用,向子進程發(fā)送一個“Kill”信號,這會導(dǎo)致子進程終止。然后,pid被設(shè)置為0,按鈕的標(biāo)簽再次變?yōu)?#34;Play"。

這個程序依賴于"mpg123"來播放音頻文件,確保安裝了"mpg123"~

FTXUI 終端簡易音樂播放器的評論 (共 條)

分享到微博請遵守國家法律
林甸县| 正阳县| 巴林左旗| 平南县| 金寨县| 宝应县| 桓仁| 汉源县| 安龙县| 浦北县| 巴彦县| 开鲁县| 肃宁县| 佳木斯市| 北辰区| 印江| 若尔盖县| 临清市| 辽源市| 临漳县| 海晏县| 常德市| 射阳县| 衡东县| 通州市| 朝阳区| 榆中县| 柘城县| 泌阳县| 阿坝县| 如东县| 弋阳县| 称多县| 广水市| 河东区| 华容县| 老河口市| 静海县| 鱼台县| 东乡族自治县| 内丘县|