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

  免費注冊 查看新帖 |

Chinaunix

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

[C] pipe 單進(jìn)程有問題嗎? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-04-16 13:58 |只看該作者 |倒序瀏覽
本帖最后由 newbuding 于 2010-04-16 13:59 編輯

大家?guī)兔纯矗@樣使用有問題嗎?
在我的電腦上用kill -CONT `pidof sigpipe`只輸出了
Enter cont
Leave cont

沒有喚醒select,這是為什么?
  1. #include <signal.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <unistd.h>


  5. static int main_pipe[2];

  6. void cont(int sig)
  7. {
  8.     printf("Enter cont\n");
  9.     write(main_pipe[1], "0", 1);
  10.     printf("Leave cont\n");
  11. }

  12. int main(int argc, char *argv[])
  13. {
  14.     pid_t pid;
  15.     int stat;
  16.     char ch[1];
  17.     int rc;
  18.     fd_set fds;

  19.     //signal(SIGINT, ouch);
  20.     signal(SIGCONT, cont);

  21.     if (pipe(main_pipe) < 0) {
  22.         perror("pipe()");
  23.         exit(1);
  24.     }

  25.     printf("pipe(%d:%d)\n", main_pipe[0], main_pipe[1]);

  26.     while(1) {

  27.         FD_ZERO(&fds);
  28.         FD_SET(main_pipe[0], &fds);

  29.         rc = select(main_pipe[0]+1, &fds, NULL, NULL, NULL);
  30.         if (rc < 0) {
  31.             continue;
  32.         }

  33.         if (FD_ISSET(main_pipe[0], &fds)) {
  34.             char x;
  35.             while (read(main_pipe[0], &x, 1) > 0) {}
  36.         }

  37.         printf(".");
  38.     }

  39.     exit(0);
  40. }
復(fù)制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2010-04-16 14:04 |只看該作者
IPC = Inter-Process Communication

論壇徽章:
0
3 [報告]
發(fā)表于 2010-04-16 14:05 |只看該作者
回復(fù) 2# langue


    老大不懂啊,詳細(xì)說說

論壇徽章:
0
4 [報告]
發(fā)表于 2010-04-16 15:17 |只看該作者
呵呵,我來當(dāng)翻譯把...
IPC 就是進(jìn)程間通信   (這個間可以了解為相互,相互的充分必要就是>=2了)
當(dāng)然不排除你在做某些事的時候是DIY的,沒有你在我自己來.自己來

還是先fork一下把

論壇徽章:
9
摩羯座
日期:2013-08-15 15:18:48獅子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龍
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亞洲杯之韓國
日期:2015-03-26 10:16:442015亞冠之武里南聯(lián)
日期:2015-08-18 14:55:52
5 [報告]
發(fā)表于 2010-04-17 10:09 |只看該作者
大家?guī)兔纯矗@樣使用有問題嗎?
在我的電腦上用kill -CONT `pidof sigpipe`只輸出了

沒有喚醒select ...
newbuding 發(fā)表于 2010-04-16 13:58



pipe單進(jìn)程應(yīng)該是沒有問題的,不過LZ的測試代碼寫的有問題。
write以后,select確實可以被喚醒。第一次是返回-1,然后循環(huán),第二次返回1,然后去做read。
但是這里的read是一個循環(huán),讀走一次返回1,接著繼續(xù)讀,被阻塞了,下面的.沒機會打印出來。
可以在pipe之后加上
unsigned long ul = 1;
ioctl(main_pipe[0], FIONBIO, &ul);
將讀管道調(diào)成非阻塞模式,就可以打印出.來了。

論壇徽章:
0
6 [報告]
發(fā)表于 2010-04-17 12:44 |只看該作者
回復(fù) 5# w_anthony
謝謝樓上的。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-04-17 21:37 |只看該作者
pipe(),一個進(jìn)程當(dāng)然沒問題,而且樓主的用法stevens的書里也用過,不過樓主的代碼阻塞在read()上了
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP