亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2905 | 回復(fù): 3
打印 上一主題 下一主題

[C] 在學(xué)多進(jìn)程,遇到了一些不懂的地方?? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-04-03 22:27 |只看該作者 |倒序?yàn)g覽
我用多線程來循環(huán)播放MP3歌曲,(MP3歌曲保存在,pt_SongInfo  隊(duì)列里面)

  1. static void Play( pt_SongInfo Head )
  2. {
  3.     pid_t pid;
  4.    
  5.     pt_SongInfo temp = Head;
  6.     if (!Head)
  7.     {
  8.         printf("The Head list is empty \n");
  9.         exit(0);
  10.     }
  11.    
  12.     temp = temp->prior;
  13.     while (1)
  14.     {
  15.         temp = temp->next;           

  16.         pid = fork();   
  17.         printf("####play  function %d##### \n",getpid());
  18.         if (pid == 0)
  19.         {   
  20.             pt_shareInfo shm_info = (pt_shareInfo)shmat(shmid, 0, 0);
  21.             if (shm_info == NULL)
  22.             {
  23.                 printf("share memory get address error \n");
  24.                 exit(0);
  25.             }
  26.             strcpy(shm_info->name,temp->name);
  27.             shm_info->grandson = getpid();
  28.             execlp("madplay","madplay","-a -50",temp->name,NULL);
  29.             printf("\n@@@@@@@@@@@@@@@@@@@@ NEXT  SONG  START @@@@@@@@@@@@@@@@@@@@\n");
  30.         }
  31.         else
  32.         {
  33.             wait(NULL);
  34.         }
  35.     }
  36. }
復(fù)制代碼
這個(gè)代碼 我通過  
printf("####play  function %d##### \n",getpid());
打印測試結(jié)果:
第一次播放
####play  function 1315#####
####play  function 1314#####

第2收
####play  function 1316#####
####play  function 1314#####


第3首
####play  function 1317#####
####play  function 1314#####


我的疑問是:
1、為什么一個(gè)print ,會出現(xiàn) 兩行打印信息?
2、無論循環(huán)多少次  ####play  function 1314#####   一定是存在的。(只要不關(guān)閉)


剛剛學(xué) linux 應(yīng)用編程,不是特別明白,再次請教
謝謝

論壇徽章:
1
戌狗
日期:2014-03-04 13:31:12
2 [報(bào)告]
發(fā)表于 2014-04-04 10:44 |只看該作者
了解一下多進(jìn)程,fork就知道了。
主進(jìn)程和子進(jìn)程都從fork()返回后的代碼開始執(zhí)行,都有執(zhí)行到這個(gè)printf()。
1314就是你主進(jìn)程的PID

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2014-04-07 21:37 |只看該作者
要想只打印一個(gè),就把第18行的代碼挪挪位置。

論壇徽章:
2
2015亞冠之萊赫維亞
日期:2015-09-14 11:19:42操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-11-05 06:20:00
4 [報(bào)告]
發(fā)表于 2014-04-09 09:04 |只看該作者

        pid = fork();   <- fork完成創(chuàng)建子進(jìn)程共享后面的代碼
        printf("####play  function %d##### \n",getpid()); <-子進(jìn)程,父進(jìn)程執(zhí)行
        if (pid == 0) <- 判斷進(jìn)程號
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP