大家好我在僞終端/dev/pts/1
上運行以下代碼,我試着從終端/dev/pts/2
讀取內容。無法使用read()系統調用從其他終端讀取數據
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
int main(){
char str[50];
int fd = open("/dev/pts/2",O_RDONLY);
str[read(fd,str,20)] = '\0';
printf("%s\n",str);
return 0;
}
[email protected]:~$ gcc test.c
[email protected]:~$ ./a.out
n
[email protected]:~$
在終端/dev/pts/2
我輸入了 「anirudh」 但它表明 「airudh」 對與缺少的字符n
被顯示在終端上/dev/pts/1
。 但是,當我嘗試從終端/dev/pts/1
讀取時,我可以正確讀取每個字符。 所以我無法理解這個程序的行爲。請幫助我。提前致謝。 :)
只是想澄清。如果沒有你在pts1中運行的程序運行類型'w',你會看到從pts2讀取的進程(它可能是/ bin/bash),然後在pts2中運行你的程序並在pts1中再次鍵入'w',你會看到進程讀取將是你的程序 - 在這種情況下,一切正常。 – zkunov 2011-03-05 10:43:37